建立接受引數的 bash 別名
概述
在使用 Bash 指令碼或 Unix/Linux 命令列工具時,我們經常一遍又一遍地編寫相同的命令列。通常,這些命令列很長,並且必須重複多次。例如,每天登入遠端伺服器、將本地資料夾複製到遠端伺服器或在目錄中搜索隱藏檔案或目錄。
您可以使用 alias 命令建立別名。在本指南中,我將向您展示如何在 Linux 上建立接受引數的別名。如果您想重複執行單個命令而不必每次都鍵入它,這將非常有用。
建立 Bash 別名
別名幫助我們為複雜的 Linux 命令和 shell 指令碼建立替代名稱。要建立別名,只需使用以下語法:
alias <alias_name>="<command to run>"
例如,如果我們想列出當前目錄中的所有檔案和資料夾,我們可以使用名為 l 的別名。
alias l="ls -alrt"
建立帶引數的別名
有時我們希望建立接受引數的別名。由於 alias 命令不直接接受引數,因此我們必須建立一個 bash 函式。Bash 函式的語法如下:
<function_name> { <commands> } OR function <function_name> { <commands> }
我們透過使用 $1、$2...$n 作為變數來定義函式,以識別傳遞給函式的引數。$0 是一個特殊變數,它標識函式本身的名稱。以下是一個名為 mkcd 的函式示例:
~soft $ mkcd() { mkdir -p -- "$1" && cd -P -- "$1"; } ~soft $ pwd /var/home/user/soft ~soft $ mkcd newdir ~newdir $ pwd /var/home/user/soft/newdir
注意 - Bash 別名是在 Bash shell 中將一個文字替換為另一個文字的方法。例如,考慮前面描述的別名 l。我們將使用 'l' 來列出檔案系統中某個目錄中可用的檔案。
[~user ]$ l Pictures/ total 308 drwx------. 1 user user 504 May 25 20:33 .. drwxrwxr-x. 1 user user 42 Jun 4 13:02 old drwxr-xr-x. 1 user user 312 Jun 4 13:02 new -rw-r--r--. 1 user user 154716 Jun 4 13:03 a.png drwxr-xr-x. 1 user user 168 Jun 8 09:43 . -rw-r--r--. 1 user user 156060 Jun 8 09:43 b.png
如果您想檢視當前開啟的檔案,請使用 ls -alrt 而不是 l。由於我們是在別名之後直接傳遞檔案路徑,因此這裡不需要任何函式。
刪除別名
您可以使用 unset 命令刪除 shell 變數的現有定義。alias 命令的語法非常簡單:
unalias <alias_name> For example, if we want to remove the 'l' alias from our current bash session, we could use the following command: unalias l
我們將使用 unset 命令從當前 Bash 會話(如果有)中刪除已定義的 Bash 函式。UNSET 命令的語法也很簡單:
unset <function_name>
例如,我們可以透過鍵入以下內容從當前 Bash 會話中刪除 'mkcd' 函式:
unset mkcd
建立永久別名
如果您使用命令列建立別名,它將僅在當前 bash 會話中有效。我們希望使別名在所有 bash 會話中都可用,因此我們將將其新增到 ~/.bash_profile 或 ~/.bashrc 中。
我們將在 ~/.bashrc 配置檔案中新增該命令的別名:
# Aliases # alias alias_name="<command to run>" # Long format list alias l="ls -alrt"
保持別名簡短易記!我們建議為每個別名添加註釋,以便以後更容易參考。
結論
我們瞭解了 alias(或簡稱“別名”)命令,包括為什麼以及何時使用它們。我們已經看到了在 Bash Shell 中定義別名的語法,並確定了一些我們可能希望使用 bash 函式來定義它們的情況。我們討論瞭如何永久建立新的別名以及如何從當前 bash 會話中刪除它。