建立接受引數的 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 會話中刪除它。

更新於: 2022-12-23

720 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告