五種繞過Linux命令別名的方法

行者武松發表於2018-03-13

我們可以使用 alias 命令定義或顯示 bash shell 別名。一旦建立了 Bash shell 別名,它們將優先於外部或內部命令。本文將展示如何暫時繞過 bash 別名,以便你可以執行實際的內部或外部命令。

我在我的 Linux 系統中定義了以下 mount 別名:

alias mount=`mount | column -t`

但是,在我掛載檔案系統和其他用途時想繞過這個 bash 別名,我如何臨時禁用或者繞過這個別名呢?

你可以使用 alias 命令定義或顯示 bash shell 別名。一旦建立了 bash shell 別名,它們將優先於外部或內部命令。本文將展示如何暫時繞過 bash 別名,以便你可以執行實際的內部或外部命令。

五種繞過 Bash 命令別名的方法

嘗試以下任意一種方法來執行被 bash shell 別名繞過的命令。讓我們先定義一個別名,用於本文的測試樣例:

alias mount=’mount | column -t’
執行 mount 命令,輸出樣例如下:

sysfs on /sys type sysfs (rw,relatime)
proc on /proc type proc (rw,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=949632k,nr_inodes=237408,mode=755)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=192156k,mode=755)
/dev/vda1 on / type ext3 (rw,noatime,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
...

方法 1 – 使用反斜槓:command

輸入以下命令暫時繞過名為 mount 的 bash 別名:mount

方法 2 – 使用引號: “command” 或 ‘command’

如下引用 mount 命令呼叫實際的 /bin/mount:”mount”
這裡單引號和雙引號都可以。

方法 3 – 使用命令的完全路徑

使用完整的二進位制路徑,如 /bin/mount:

方法 4 – 使用內部命令 command

就是在執行的命令前加上 command 命令,樣例如下:

command cmd
command cmd arg1 arg2

要繞過 .bash_aliases 中設定的別名,例如 mount:

command mount
command mount /dev/sdc /mnt/pendrive/

“command” 直接執行命令或顯示關於命令的資訊。它帶引數執行命令,會阻止 shell 函式查詢或者別名,或者顯示有關給定命令的資訊。

方法 5 – 使用 unalias 命令的說明

要從當前會話的已定義別名列表中移除別名,請使用 unalias 命令:

unalias mount

要從當前 bash 會話中刪除所有別名定義:

unalias -a

如果要永久刪除定義的別名,則必須刪除別名的定義語句,確保你更新你的 ~/.bashrc 或 $HOME/.bash_aliases :

vi ~/.bashrc  #或者執行 vi $HOME/.bash_aliases

想了解更多資訊,參考這裡的線上手冊,或者輸入下面的命令檢視:

man bash
help command
help unalias
help alias
原文釋出時間:2018-03-08
本文來自雲棲社群合作伙伴“Debian社群”,瞭解相關資訊可以關注“Debian社群”。


相關文章