alias

定義或顯示別名。

概要

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

主要用途

  • 簡化較長的命令。
  • 定義、修改或者顯示一個或多個別名。

選項

1-p:顯示全部已定義的別名。
2name(可選):指定要(定義、修改、顯示)的別名。
3value(可選):別名的值。

返回值

alias 返回 true 除非您要顯示的別名未定義。

例子

 1# 顯示全部已定義的別名
 2alias
 3alias -p
 4
 5# 顯示已定義的別名(假設當前環境存在以下別名)
 6alias ls
 7alias ls grep
 8
 9# 定義或修改別名的值
10alias ls='ls --color=auto'
11alias 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文件,會發現有這樣一段代碼:

1if [ -f ~/.bash_aliases ]; then
2  . ~/.bash_aliases
3fi

這個代碼的意思就是如果存在那麼就加載.bash_aliases文件,所以也可以在用戶根目錄下新建該文件用於單獨存放命令別名設置。

錯誤用法

  • 要顯示的別名未定義。
  • 當您定義(修改)別名的值的時候,由於值的字符串有空格但您沒有用單引號擴起,那麼會導致嚴重的問題:
1# 爲方便演示,刪除全部別名
2unalias -a
3# 沒有用單引號擴起
4alias rm=rm -rf
5# 執行命令後報錯 bash: alias: -rf: not found
6# 這時使用alias查看rm的別名時返回 alias rm='rm'
 1# 更具有迷惑性的例子
 2# 爲方便演示,刪除全部別名
 3unalias -a
 4# 仍然沒有用單引號括起
 5alias 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腳本如果執行了 aliasunalias 命令,那麼有可能會對終端環境的別名設置產生影響;終端環境的別名設置也可能改變運行結果;
    • 通過 sh 方式調用的 bash 腳本或直接運行當前用戶有執行權限的腳本不受終端環境的別名影響。
  2. 刪除別名,請查看unalias命令。
  3. 建議您不要對 mv cp rm 等命令的別名設置危險的 -f 選項,比如 alias rm='rm -f'
  4. 需要注意別名是否和其他命令有衝突的情況。
  5. 該命令是 bash 內建命令,相關的幫助信息請查看 help 命令。

其他參考鏈接

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: