问题描述
我想创建一个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
然后在底部添加你的别名。
现在在您的终端中执行. ~/.bashrc
(在.
和~/.bashrc
之间应该有一个空格。
现在你可以检查你的别名。
次佳解决思路
有很多方法来创建别名。最常用的方法是:
-
直接在您的
~/.bashrc
文件中添加别名例如:将这些行追加到
~/.bashrc
文件alias ll='ls -l' alias rm='rm -i'
下一次(在注销/进入后,或完成
. ~/.bashrc
后)键入rm
时,将执行rm -i
命令。 -
第二种方法允许您创建一个单独的别名文件,因此您不必将它们放入
.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你的点文件,所以你不需要。一探究竟。