Linux命令 alias -定義或顯示別名

2021-10-08 11:44 更新

alias

定義或顯示別名。

語(yǔ)法

alias [-p] [name[=value] ...]

主要用途

  • 簡(jiǎn)化較長(zhǎng)的命令。
  • 定義一個(gè)或多個(gè)別名。
  • 修改一個(gè)或多個(gè)已定義別名的值。
  • 顯示一個(gè)或多個(gè)已定義別名。
  • 顯示全部已定義的別名。

選項(xiàng)

-p:顯示全部已定義的別名。

參數(shù)

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'

知識(shí)點(diǎn)

直接在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è)置。

錯(cuò)誤用法

  • 要顯示的別名未定義。
  • 當(dāng)您定義(修改)別名的值的時(shí)候,由于值的字符串有空格但您沒(méi)有用單引號(hào)擴(kuò)起,那么會(huì)導(dǎo)致嚴(yán)重的問(wèn)題:
#  為方便演示,刪除全部別名
unalias -a
#  沒(méi)有用單引號(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
#  仍然沒(méi)有用單引號(hào)括起
alias ls=ls --color=never
#  執(zhí)行命令后看起來(lái)沒(méi)有報(bào)錯(cuò)

#  使用alias查看全部別名會(huì)發(fā)現(xiàn)運(yùn)行結(jié)果如下:
#  alias --color=never
#  alias ls='ls'
#  alias處理時(shí)將它們看成了兩組

Q&A

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)容;不要這樣定義。

注意

  1. 執(zhí)行腳本時(shí)請(qǐng)注意:

    使用?source?命令執(zhí)行的bash腳本如果執(zhí)行了?alias?或?unalias?命令,那么有可能會(huì)對(duì)終端環(huán)境的別名設(shè)置產(chǎn)生影響;終端環(huán)境的別名設(shè)置也可能改變運(yùn)行結(jié)果;
    通過(guò)?sh?方式調(diào)用的bash腳本或直接運(yùn)行當(dāng)前用戶有執(zhí)行權(quán)限的腳本不受終端環(huán)境的別名影響。
  2. 刪除別名,請(qǐng)查看?unalias?命令。
  3. 建議您不要對(duì)?mv ??cp? ?rm?等命令的別名設(shè)置危險(xiǎn)的-f選項(xiàng),比如?alias rm='rm -f'?。
  4. 需要注意別名是否和其他命令有沖突的情況。
  5. 該命令是bash內(nèi)建命令,相關(guān)的幫助信息請(qǐng)查看?help?命令。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)