定義或顯示別名。
alias [-p] [name[=value] ...]
-p:顯示全部已定義的別名。
name(可選):指定要(定義、修改、顯示)的別名。
value(可選):別名的值。
alias返回true除非您要顯示的別名未定義。
# 顯示全部已定義的別名
alias
alias -p
# 顯示已定義的別名(假設(shè)當(dāng)前環(huán)境存在以下別名)
alias ls
alias ls grep
# 定義或修改別名的值
alias ls='ls --color=auto'
alias ls='ls --color=never' grep='grep --color=never'
直接在shell里設(shè)定的命令別名,在終端關(guān)閉或者系統(tǒng)重新啟動(dòng)后都會(huì)失效,如何才能永久有效呢?
使用編輯器打開~/.bashrc
,在文件中加入別名設(shè)置,如:alias rm='rm -i',保存后執(zhí)行source ~/.bashrc
,這樣就可以永久保存命令的別名了。
因?yàn)樾薷牡氖钱?dāng)前用戶目錄下的~/.bashrc
文件,所以這樣的方式只對(duì)當(dāng)前用戶有用。如果要對(duì)所有用戶都有效,修改/etc/bashrc
文件就可以了。
請(qǐng)注意,以下內(nèi)容可能與您實(shí)際使用的系統(tǒng)有出入:
在CentOS7下,這個(gè)文件是
/etc/bash.bashrc
。此外在CentOS7下,細(xì)看~/.bashrc
文件,會(huì)發(fā)現(xiàn)有這樣一段代碼:if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
這個(gè)代碼的意思就是如果存在那么就加載
.bash_aliases
文件,所以也可以在用戶根目錄下新建該文件用于單獨(dú)存放命令別名設(shè)置。
要顯示的別名未定義。
當(dāng)您定義(修改)別名的值的時(shí)候,由于值的字符串有空格但您沒有用單引號(hào)擴(kuò)起,那么會(huì)導(dǎo)致嚴(yán)重的問題:
# 為方便演示,刪除全部別名
unalias -a
# 沒有用單引號(hào)擴(kuò)起
alias rm=rm -rf
# 執(zhí)行命令后報(bào)錯(cuò) bash: alias: -rf: not found
# 這時(shí)使用alias查看rm的別名時(shí)返回 alias rm='rm'
# 更具有迷惑性的例子
# 為方便演示,刪除全部別名
unalias -a
# 仍然沒有用單引號(hào)括起
alias ls=ls --color=never
# 執(zhí)行命令后看起來沒有報(bào)錯(cuò)
# 使用alias查看全部別名會(huì)發(fā)現(xiàn)運(yùn)行結(jié)果如下:
# alias --color=never
# alias ls='ls'
# alias處理時(shí)將它們看成了兩組
Q:如果我要顯示一到多個(gè)別名,但不知道其中是否有未定義的該怎么辦?
A:正常執(zhí)行就是了,alias不會(huì)因?yàn)橛幸粋€(gè)未定義的別名就結(jié)束對(duì)剩余參數(shù)的執(zhí)行。
Q:如果我這么定義alias cd='ls' ls='cd'
,會(huì)有什么后果?
A:運(yùn)行cd依然會(huì)切換目錄,運(yùn)行l(wèi)s依然會(huì)列出文件夾的內(nèi)容;不要這樣定義。
使用
source
命令執(zhí)行的bash腳本如果執(zhí)行了alias
或unalias
命令,那么有可能會(huì)對(duì)終端環(huán)境的別名設(shè)置產(chǎn)生影響;終端環(huán)境的別名設(shè)置也可能改變運(yùn)行結(jié)果;通過
sh
方式調(diào)用的bash腳本或直接運(yùn)行當(dāng)前用戶有執(zhí)行權(quán)限的腳本不受終端環(huán)境的別名影響。
刪除別名,請(qǐng)查看unalias
命令。
建議您不要對(duì)mv cp rm
等命令的別名設(shè)置危險(xiǎn)的-f
選項(xiàng),比如alias rm='rm -f'
。
需要注意別名是否和其他命令有沖突的情況。
該命令是bash內(nèi)建命令,相關(guān)的幫助信息請(qǐng)查看help
命令。