如果不是一個命令列重度使用者的話,過了一段時間之後,你就可能已經忘記了這些複雜且冗長的 Linux 命令了。當然,有很多方法可以讓你 回想起遺忘的命令。你可以簡單的 儲存常用的命令 然後按需使用。也可以在終端裡 標記重要的命令,然後在任何時候你想要的時間使用它們。而且,Linux 有一個內建命令 history
可以幫助你記憶這些命令。另外一個記住這些如此長的命令的簡便方式就是為這些命令建立一個別名。你可以為任何經常重複呼叫的常用命令建立別名,而不僅僅是長命令。通過這種方法,你不必再過多地記憶這些命令。這篇文章中,我們將會在 Linux 環境下舉例說明 alias
和 unalias
命令。
alias
使用一個使用者自定義的字串來代替一個或者一串命令(包括多個選項、引數)。這個字串可以是一個簡單的名字或者縮寫,不管這個命令原來多麼複雜。alias
命令已經預裝在 shell(包括 BASH、Csh、Ksh 和 Zsh 等) 當中。
alias
的通用語法是:
alias [alias-name[=string]...]
接下來看幾個例子。
可能在你的系統中已經設定了一些別名。有些應用在你安裝它們的時候可能已經自動建立了別名。要檢視已經存在的別名,執行:
$ alias
或者,
$ alias -p
在我的 Arch Linux 系統中已經設定了下面這些別名。
alias betty='/home/sk/betty/main.rb'alias ls='ls --color=auto'alias pbcopy='xclip -selection clipboard'alias pbpaste='xclip -selection clipboard -o'alias update='newsbeuter -r && sudo pacman -Syu'
像我之前說的,你不必去記憶這些又臭又長的命令。你甚至不必一遍一遍的執行長命令。只需要為這些命令建立一個簡單易懂的別名,然後在任何你想使用的時候執行這些別名就可以了。這種方式會讓你愛上命令列。
$ du -h --max-depth=1 | sort -hr
這個命令將會查詢當前工作目錄下的各個子目錄占用的磁碟大小,並按照從大到小的順序進行排序。這個命令有點長。我們可以像下面這樣輕易地為其建立一個 別名:
$ alias du='du -h --max-depth=1 | sort -hr'
這裡的 du
就是這條命令的別名。這個別名可以被設定為任何名字,主要便於記憶和區別。
在建立一個別名的時候,使用單引號或者雙引號都是可以的。這兩種方法最後的結果沒有任何區別。
現在你可以執行這個別名(例如我們這個例子中的 du
)。它和上面的原命令將會產生相同的結果。
這個別名僅限於當前 shell 對談中。一旦你退出了當前 shell 對談,別名也就失效了。為了讓這些別名長久有效,你需要把它們新增到你 shell 的組態檔當中。
BASH,編輯 ~/.bashrc
檔案:
$ nano ~/.bashrc
一行新增一個別名:
儲存並退出這個檔案。然後執行以下命令更新修改:
$ source ~/.bashrc
現在,這些別名在所有對談中都可以永久使用了。
ZSH,你需要新增這些別名到 ~/.zshrc
檔案中。Fish,跟上面的類似,新增這些別名到 ~/.config/fish/config.fish
檔案中。
像我上面提到的,你可以使用 alias
命令列出你系統中所有的別名。如果你想檢視跟給定的別名有關的命令,例如 du
,只需要執行:
$ alias dualias du='du -h --max-depth=1 | sort -hr'
像你看到的那樣,上面的命令可以顯示與單詞 du
有關的命令。
關於 alias
命令更多的細節,參閱 man 手冊頁:
$ man alias
跟它的名字說的一樣,unalias
命令可以很輕鬆地從你的系統當中移除別名。unalias
命令的通用語法是:
unalias <alias-name>
要移除命令的別名,像我們之前建立的 du
,只需要執行:
$ unalias du
unalias
命令不僅會從當前對談中移除別名,也會從你的 shell 組態檔中永久地移除別名。
還有一種移除別名的方法,是建立具有相同名稱的新別名。
要從當前對談中移除所有的別名,使用 -a
選項:
$ unalias -a
更多細節,參閱 man 手冊頁。
$ man unalias
如果你經常一遍又一遍的執行這些繁雜又冗長的命令,給它們建立別名可以節省你的時間。現在是你為常用命令建立別名的時候了。
這就是所有的內容了。希望可以幫到你。還有更多的乾貨即將到來,敬請期待!
祝近祺!