Linux alias命令的用法(非常详细)
Linux alias 命令用来定义或者显示别名,它的用法如下:
alias 命令返回 true,除非您要显示的别名未定义。
Linux alias 命令主要用于简化较长的命令,或者定义、修改、显示一个/多个别名。请看下面的例子:
使用编辑器打开
因为修改的是当前用户目录下的 ~/.bashrc 文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改
请注意,在 CentOS7 下,这个文件是 /etc/bash.bashrc。此外在 CentOS7 下,细看 ~/.bashrc 文件,会发现有这样一段代码:
A:正常执行就是了,alias 不会因为有一个未定义的别名就结束对剩余参数的执行。
Q:如果我这么定义
A:运行 cd 依然会切换目录,运行 ls 依然会列出文件夹的内容,所以不要这样定义。
2) 删除别名,请查看 unalias 命令。
3) 建议您不要对 mv cp rm 等命令的别名设置危险的
4) 需要注意别名是否和其他命令有冲突的情况。
5) 该命令是 bash 内建命令,相关的帮助信息请查看 help 命令。
alias [-p] [name[=value] ...]选项说明:
- -p:显示全部已定义的别名。
- name(可选):指定要(定义、修改、显示)的别名。
- value(可选):别名的值。
alias 命令返回 true,除非您要显示的别名未定义。
Linux alias 命令主要用于简化较长的命令,或者定义、修改、显示一个/多个别名。请看下面的例子:
# 显示全部已定义的别名 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
文件就可以了。请注意,在 CentOS7 下,这个文件是 /etc/bash.bashrc。此外在 CentOS7 下,细看 ~/.bashrc 文件,会发现有这样一段代码:
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi这个代码的意思就是如果存在那么就加载 .bash_aliases 文件,所以也可以在用户根目录下新建该文件用于单独存放命令别名设置。
错误用法
当您定义(修改)别名的值的时候,由于值的字符串有空格但您没有用单引号扩起,那么会导致严重的问题:# 例子1 # 为方便演示,删除全部别名 unalias -a # 没有用单引号扩起 alias rm=rm -rf # 执行命令后报错 bash: alias: -rf: not found # 这时使用alias查看rm的别名时返回 alias rm='rm' # 例子2 # 更具有迷惑性的例子 # 为方便演示,删除全部别名 unalias -a # 仍然没有用单引号括起 alias ls=ls --color=never # 执行命令后看起来没有报错 # 使用alias查看全部别名会发现运行结果如下: # alias --color=never # alias ls='ls' # alias处理时将它们看成了两组
Q&A
Q:如果我要显示一到多个别名,但不知道其中是否有未定义的该怎么办?A:正常执行就是了,alias 不会因为有一个未定义的别名就结束对剩余参数的执行。
Q:如果我这么定义
alias cd='ls' ls='cd'
,会有什么后果?A:运行 cd 依然会切换目录,运行 ls 依然会列出文件夹的内容,所以不要这样定义。
注意事项
1) 执行脚本时请注意:- 使用 source 命令执行的bash脚本如果执行了 alias 或 unalias 命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果;
- 通过 sh 方式调用的 bash 脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。
2) 删除别名,请查看 unalias 命令。
3) 建议您不要对 mv cp rm 等命令的别名设置危险的
-f
选项,比如alias rm='rm -f'
。4) 需要注意别名是否和其他命令有冲突的情况。
5) 该命令是 bash 内建命令,相关的帮助信息请查看 help 命令。