AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 17536
Accepted
Bakhtiyor
Bakhtiyor
Asked: 2010-12-15 23:54:39 +0800 CST2010-12-15 23:54:39 +0800 CST 2010-12-15 23:54:39 +0800 CST

如何创建一个永久的 Bash 别名?

  • 772

我想为rm命令创建一个别名,以便在执行此命令后收到确认消息。所以我正在创建一个这样的别名alias rm='rm -i'。但据我所知,这是一个临时别名,它会一直存在,直到您关闭终端为止。

正如这里解释的那样永久保存别名我需要在终端中执行~/.bash_aliases或命令并在那里添加我的别名。~/.bashrc但是当我执行时,~/.bashrc我收到以下错误消息:

bash: /home/bakhtiyor/.bashrc: Permission denied

当我运行时,~/.bash_aliases我收到另一条如下错误消息:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

实际问题是什么,我该如何解决?

bash alias
  • 10 10 个回答
  • 1017948 Views

10 个回答

  • Voted
  1. Best Answer
    karthick87
    2010-12-16T00:24:37+08:002010-12-16T00:24:37+08:00

    要永久创建别名,请将别名添加到您的.bashrc文件中

    gedit ~/.bashrc
    

    然后在底部添加您的别名。

    替代文字

    现在在您的终端中执行(和. ~/.bashrc之间应该有一个空格。.~/.bashrc

    现在您可以检查您的别名。

    替代文字

    • 554
  2. aneeshep
    2010-12-16T00:21:50+08:002010-12-16T00:21:50+08:00

    有很多方法可以创建别名。最常用的方法是:

    1. 直接在~/.bashrc文件中添加别名

      例如:将这些行附加到~/.bashrc文件

      alias ll='ls -l'
      alias rm='rm -i'
      

      下次(在您注销/登录或完成之后. ~/.bashrc)键入命令时rm将rm -i执行。

    2. 第二种方法允许您制作一个单独的别名文件,因此您不必将它们放入 中.bashrc,而是放入您选择的文件中。首先,编辑您的~/.bashrc文件并添加以下行(如果它们不存在),或者取消注释它们(如果存在):

      if [ -f ~/.bash_aliases ]; then
      . ~/.bash_aliases
      fi
      

      保存并关闭文件。之后,您所要做的就是创建一个~/.bash_aliases文件并在其中添加别名,格式与第一种方法中指定的格式相同。

      我的~/.bash_aliases文件内容:

      alias cs='cd;ls'
      
    • 317
  3. Marty Fried
    2012-01-17T12:29:50+08:002012-01-17T12:29:50+08:00

    在我看来,您唯一的问题就是在 .bashrc 不可执行时尝试执行它。但这不是正确的方法;每当您对此文件进行更改时,都应通过以下命令“执行”它:

    source ~/.bashrc
    

    否则,它只会创建一个新 shell,在新 shell 的环境中执行文件,然后在退出时丢弃该环境,从而丢失您的更改。通过获取脚本,它会在当前 shell 中执行,因此它将保持有效。

    我假设第二个错误是因为 bash_aliases 不存在。这不是必需的,只是建议将您的更改分开和组织。它仅在存在时使用,您可以在 .bashrc 中查看它的测试:

    if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
    fi
    

    这表示如果文件 ~/.bash_aliases 存在,则运行它。

    • 23
  4. João Pinto
    2010-12-16T02:24:52+08:002010-12-16T02:24:52+08:00

    问题是您正在尝试执行非可执行文件:您可以通过以下方式检查:

    ls -la ~/.bashrc
    -rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc
    

    请注意,第一列(文件权限)上没有“x - 可执行”字母。

    配置文件不是可执行文件,而不是执行它们你加载它们:

    source /home/bakhtiyor/.bashrc
    

    或者

    . /home/bakhtiyor/.bashrc
    
    • 17
  5. user80638
    2013-06-16T03:39:50+08:002013-06-16T03:39:50+08:00
    echo "alias vps='ssh -X [email protected]'" >> ~/.bashrc
    

    这是我一直在寻找的一个示例,一种在终端(“vps”)上键入几个字母以远程登录服务器并启用 X11 转发的方法,这样我就可以通过网络运行诸如“gedit”之类的 gui 应用程序。

    无论是什么命令/别名命令,这种方式与 echo 语句、引号和用于将命令输出附加到文件 (>>) 的符号都对我有用。只需将我的命令替换为您需要的别名命令并将其输入您的终端。

    • 12
  6. blizzrdof77
    2013-12-18T12:37:08+08:002013-12-18T12:37:08+08:00

    我编写了这个有用的函数来快速创建一个新别名,然后将别名定义写入~/.bash_aliases (如果存在)或~/.bashrc.

    提示:确保~/.bash_aliases存在并在~/.bashrc.

    # -----------------------------------
    #  Create a new permanent bash alias
    #
    #  @param $1 - name
    #  @param $2 - definition
    # -----------------------------------
    new-alias () { 
      if [ -z "$1" ]; then
        echo "alias name:" && read NAME
      else
        NAME=$1
      fi
    
      if alias $NAME 2 > /dev/null > /dev/null; then
        echo "alias $NAME already exists - continue [y/n]?" && read YN
        case $YN in
          [Yy]* ) echo "okay, let's proceed.";;
          [Nn]* ) return;;
          * ) echo "invalid response." && return;;
        esac
      fi
    
      if [ -z "$2" ]; then
        echo "alias definition:" && read DEFINTION
      else
        DEFINTION="$2"
      fi
    
      if [ -f ~/.bash_aliases ]; then
        echo "alias $NAME=\"$DEFINTION\"" >> ~/.bash_aliases
      else
        echo "alias $NAME=\"$DEFINTION\"" >> ~/.bashrc
      fi
    
      alias $NAME="$DEFINTION"
    }
    
    • 7
  7. ytbryan
    2015-01-22T06:14:35+08:002015-01-22T06:14:35+08:00

    如果您使用的是 ruby​​,则可以使用 ruby​​gem 安装 aka。

    gem install aka2

    用法

    aka generate hello="echo helloworld" #add an alias
    aka g hello="echo helloworld"  #add alias for lazy people
    
    aka destroy hello #remove alias
    aka d hello #remove alias for lazy people
    

    rubygem 将自动获取您的点文件,这样您就不需要了。一探究竟。

    • 5
  8. Wolfpack'08
    2020-02-23T19:32:58+08:002020-02-23T19:32:58+08:00

    我很想扩展这个想法!

    您想alias根据您的问题发出命令:

    echo "alias wolfr='cd /home/wolf'">>./~bashrc
    

    现在您可以键入wolfr移动到 wolf 的主目录。

    这个很相似也很酷,export命令:

    echo "export ngse=/etc/nginx/sites-enabled"./~bashrc
    

    现在您可以键入cp $ngse/my_file /destination_directory/destination_filename以将文件从启用站点的目录复制到目标。

    在您执行以下操作之前,这些都不会起作用:

    exec bash
    

    或者,您可以重新登录或重新启动。

    • 3
  9. Fahad Ahammed
    2015-08-09T19:36:12+08:002015-08-09T19:36:12+08:00

    我建议使用/etc/bash.bashrc

    您可以在该文件的末尾添加行。

    alias ok="ping google.com"
    

    在每行放置别名后,您必须重新启动或重新登录。

    • 0
  10. Thufir
    2018-12-23T06:45:46+08:002018-12-23T06:45:46+08:00

    我记得,bashrc已经或曾经有一条线建议不要直接将它用于别名。解决方案是使用外部文件。和别名已添加,但要添加foo文件必须是“来源”(或者,只需打开一个新终端)。示例为:barbazbashrc

    thufir@dur:~$ 
    thufir@dur:~$ alias
    alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
    alias bar='echo foo'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias foo='echo foo'
    alias grep='grep --color=auto'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -alF'
    alias ls='ls --color=auto'
    thufir@dur:~$ 
    thufir@dur:~$ cat .bash_aliases 
    alias foo='echo foo'
    alias bar='echo foo'
    alias baz='echo baz'
    
    thufir@dur:~$ 
    thufir@dur:~$ source .bashrc 
    thufir@dur:~$ 
    thufir@dur:~$ alias
    alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
    alias bar='echo foo'
    alias baz='echo baz'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias foo='echo foo'
    alias grep='grep --color=auto'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -alF'
    alias ls='ls --color=auto'
    thufir@dur:~$ 
    thufir@dur:~$ baz
    baz
    thufir@dur:~$ 
    

    现在baz别名有效。我现在才意识到以前的答案提到了这种技术,但他们已经埋葬了lede。

    • 0

相关问题

  • 同时复制到两个位置

  • 如何在 shell 脚本中创建选择菜单?

  • 从 bash 迁移到 zsh [关闭]

  • bashrc 还是 bash_profile?

  • 备份 bash 脚本未压缩其 tarball

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve