当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

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

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

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

当我运行~/.bash_aliases时,我收到了另外一个错误消息:

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

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

最佳解决思路

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

gedit ~/.bashrc

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

bash,alias,ubuntu

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

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

bash,alias,ubuntu

次佳解决思路

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

  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'
    

第三种解决思路

问题是你试图执行一个不可执行的文件:你可以用下面的方法检查它:

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

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

配置文件不是可执行文件,而是执行它们,您可以使用它们加载它们:

source /home/bakhtiyor/.bashrc

要么

. /home/bakhtiyor/.bashrc

第四种思路

这听起来像你唯一的问题就是当它不可执行时试图执行.bashrc。但这不是正确的做法;每当你对这个文件进行修改时,你应该通过命令”execute”它:

source ~/.bashrc

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

我假设第二个错误是因为bash_aliases不存在。这不是必需的,只是建议保持您的更改单独和组织。它仅在存在时才使用,并且您可以在.bashrc中看到它的测试:

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

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

第五种思路

echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

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

无论命令/别名命令如何,用echo语句,引号和用于将命令的输出附加到文件(>>)的符号都适用于我。只需将我的命令替换为您需要的别名命令并将其输入到您的终端中即可。

第六种思路

我已经做了这个小函数来快速地将new-alias写入.bashrc

##------------------------------------ ##
 #           -- new-alias --           #
 # creates new alias & writes to file  #
 #          $1 = alias new             #
 #          $2 = alias definition      #
##------------------------------------ ##
new-alias () { 
  if [ -z "$1" ]; then
    echo "alias name:"
    read NAME
  else
    NAME=$1
  fi

  if [ -z "$2" ]; then
    echo "alias definition:"
    read DEFINTION
  else
    if [ "$2" = "-cd" ]; then
      DEFINTION='cd '
    else
      DEFINTION=$2
    fi
  fi

  echo "alias $NAME='$DEFINTION'" >> ~/.bashrc
  . ~/.bashrc
}

第七种思路

如果你使用ruby,你可以使用rubygem安装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会auto-source你的点文件,所以你不需要。一探究竟。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/105.html,未经允许,请勿转载。