定义或显示别名。
alias [-p] [name[=value] ...]
-p:显示全部已定义的别名。
name(可选):指定要(定义、修改、显示)的别名。
value(可选):别名的值。
alias 返回 true 除非您要显示的别名未定义。
# 显示全部已定义的别名
alias
alias -p
# 显示已定义的别名(假设当前环境存在以下别名)
alias ls
alias ls grep
# 定义或修改别名的值
alias ls='ls --color=auto'
alias ls='ls --color=never' grep='grep --color=never'
直接在shell里设定的命令别名,在终端关闭或者系统重新启动后都会失效,如何才能永久有效呢?
使用编辑器打开~/.bashrc
,在文件中加入别名设置,如:alias rm='rm -i',保存后执行source ~/.bashrc
,这样就可以永久保存命令的别名了。
因为修改的是当前用户目录下的~/.bashrc
文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc/bashrc
文件就可以了。
/etc/bash.bashrc
。此外在CentOS7下,细看~/.bashrc
文件,会发现有这样一段代码:if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
这个代码的意思就是如果存在那么就加载.bash_aliases
文件,所以也可以在用户根目录下新建该文件用于单独存放命令别名设置。# 为方便演示,删除全部别名
unalias -a
# 没有用单引号扩起
alias rm=rm -rf
# 执行命令后报错 bash: alias: -rf: not found
# 这时使用alias查看rm的别名时返回 alias rm='rm'
# 更具有迷惑性的例子
# 为方便演示,删除全部别名
unalias -a
# 仍然没有用单引号括起
alias ls=ls --color=never
# 执行命令后看起来没有报错
# 使用alias查看全部别名会发现运行结果如下:
# alias --color=never
# alias ls='ls'
# alias处理时将它们看成了两组
Q:如果我要显示一到多个别名,但不知道其中是否有未定义的该怎么办?
A:正常执行就是了,alias不会因为有一个未定义的别名就结束对剩余参数的执行。
Q:如果我这么定义alias cd='ls' ls='cd'
,会有什么后果?
A:运行cd依然会切换目录,运行ls依然会列出文件夹的内容;不要这样定义。