我想为rm命令创建一个别名,以便在执行此命令后收到确认消息。所以我正在创建一个这样的别名alias rm='rm -i'。但据我所知,这是一个临时别名,它会一直存在,直到您关闭终端。
正如这里解释的永久保存别名,我需要在终端中执行~/.bash_aliases或~/.bashrc命令并在那里添加我的别名。但是当我执行时,~/.bashrc我收到以下错误消息:
bash: /home/bakhtiyor/.bashrc: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我运行时,~/.bash_aliases我收到另一条错误消息,如下所示:
bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.
Run Code Online (Sandbox Code Playgroud)
实际问题是什么,我该如何解决?
kar*_*k87 525
要创建别名,请将该别名永久添加到您的.bashrc文件中
gedit ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
然后在底部添加您的别名。

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

ane*_*hep 302
有很多方法可以创建别名。最常用的方法是:
直接在~/.bashrc文件中添加别名
例如:将这些行附加到~/.bashrc文件
alias ll='ls -l'
alias rm='rm -i'
Run Code Online (Sandbox Code Playgroud)
接下来的时间(你已经登录后输出/输入,或做. ~/.bashrc)当你键入rm的rm -i命令将被执行。
第二种方法允许您制作一个单独的别名文件,因此您不必将它们放入 中.bashrc,而是放入您选择的文件中。首先,编辑您的~/.bashrc文件并添加以下行(如果它们尚不存在),或者如果存在则取消注释它们:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)
保存并关闭文件。之后,您所要做的就是创建一个~/.bash_aliases文件并在其中添加别名,格式与第一种方法中指定的格式相同。
我的~/.bash_aliases文件内容:
alias cs='cd;ls'
Run Code Online (Sandbox Code Playgroud)Mar*_*ied 21
在我看来,您唯一的问题就是在 .bashrc 不可执行时尝试执行它。但这不是正确的做法;每当您对此文件进行更改时,您都应该通过以下命令“执行”它:
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
否则,它只会创建一个新 shell,在新 shell 的环境中执行文件,然后在退出时丢弃该环境,从而丢失您的更改。通过获取脚本,它会在当前 shell 中执行,因此它将保持有效。
我假设第二个错误是因为 bash_aliases 不存在。这不是必需的,只是建议将您的更改分开和组织。它仅在存在时才使用,您可以在 .bashrc 中看到它的测试:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)
这表示如果文件 ~/.bash_aliases 存在,则运行它。
Joã*_*nto 17
问题是您正在尝试执行非可执行文件:您可以通过以下方式检查:
ls -la ~/.bashrc
-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc
Run Code Online (Sandbox Code Playgroud)
请注意,第一列(文件权限)上没有“x - 可执行”字母。
配置文件不是可执行文件,而不是执行它们加载它们:
source /home/bakhtiyor/.bashrc
Run Code Online (Sandbox Code Playgroud)
或者
. /home/bakhtiyor/.bashrc
Run Code Online (Sandbox Code Playgroud)
use*_*638 10
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
这是我正在寻找的一个示例,一种在终端(“vps”)上键入几个字母以远程登录服务器并启用 X11 转发的方法,这样我就可以通过网络运行诸如“gedit”之类的 gui 应用程序。
无论是什么命令/别名命令,这种带有 echo 语句、引号和用于将命令的输出附加到文件 (>>) 的符号的方式对我来说都适用。只需将我的命令替换为您需要的别名命令并将其输入到您的终端中。
我编写了这个有用的函数来快速创建一个新别名,然后将别名定义写入~/.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"
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 ruby,则可以使用 rubygem 进行安装。
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
Run Code Online (Sandbox Code Playgroud)
rubygem 将自动获取您的 dot 文件,这样您就不需要了。一探究竟。
| 归档时间: |
|
| 查看次数: |
942413 次 |
| 最近记录: |