alias - 定義或顯示別名
概要
1. alias [-p] [name[=value] ...]
主要用途
簡化較長的命令。
定義一個或多個別名。
修改一個或多個已定義別名的值。
顯示一個或多個已定義別名。
顯示全部已定義的別名。
選項
1. -p:顯示全部已定義的別名。
參數
name(可選):指定要(定義、修改、顯示)的別名。
value(可選):別名的值。
返回值
alias返回true除非您要顯示的別名未定義。
例子
1.# 顯示全部已定義的別名
2.alias
3.alias -p
4.
5.# 顯示已定義的別名(假設當前環境存在以下別名)
6.alias ls
7.alias ls grep
8.
9.# 定義或修改別名的值
10. alias ls='ls --color=auto'
11. 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 文件,會發
現有這樣一段代碼:
1.
if [ -f ~/.bash_aliases ]; then
2.
. ~/.bash_aliases
3.
fi
這個代碼的意思就是如果存在那么就加載 .bash_aliases 文件,所以也可以在用戶根目錄下新建該文件用
於單獨存放命令別名設置。
錯誤用法
要顯示的別名未定義。
當您定義(修改)別名的值的時候,由於值的字符串有空格但您沒有用單引號擴起,那么會導致
嚴重的問題:
1.# 為方便演示,刪除全部別名
2.unalias -a
3.# 沒有用單引號擴起
4.alias rm=rm -rf
5.# 執行命令后報錯 bash: alias: -rf: not found
6.# 這時使用alias查看rm的別名時返回 alias rm='rm'
1.# 更具有迷惑性的例子
2.# 為方便演示,刪除全部別名
3.unalias -a
4.# 仍然沒有用單引號括起
5.alias ls=ls --color=never
6.# 執行命令后看起來沒有報錯
7.
8.# 使用alias查看全部別名會發現運行結果如下:
9.# alias --color=never
10. # alias ls='ls'
11. # alias處理時將它們看成了兩組
Q&A
Q:如果我要顯示一到多個別名,但不知道其中是否有未定義的該怎么辦?
A:正常執行就是了,alias不會因為有一個未定義的別名就結束對剩余參數的執行。
Q:如果我這么定義 alias cd='ls' ls='cd' ,會有什么后果?
A:運行cd依然會切換目錄,運行ls依然會列出文件夾的內容;不要這樣定義。
注意
1. 執行腳本時請注意:
使用 source 命令執行的bash腳本如果執行了 alias 或 unalias 命令,那么有可能會對終端環境的
別名設置產生影響;終端環境的別名設置也可能改變運行結果;
通過 sh 方式調用的bash腳本或直接運行當前用戶有執行權限的腳本不受終端環境的別名影響。
1. 刪除別名,請查看 unalias 命令。
2. 建議您不要對 mv cp rm 等命令的別名設置危險的 -f 選項,比如
alias rm='rm -f' 。
3. 需要注意別名是否和其他命令有沖突的情況。
4. 該命令是bash內建命令,相關的幫助信息請查看 help 命令。