
假設我在 bash shell 中有一個別名。是否有一個簡單的命令可以列印出別名將運行的命令?
答案1
內建type
函數對此很有用。它不僅會告訴您有關別名的信息,還會告訴您函數、內建函數、關鍵字和外部命令。
$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep ()
{
ps -ef | {
read -r;
printf '%s\n' "$REPLY";
grep --color=auto "$@"
}
}
type -a cmd
將按優先順序顯示該名稱的所有命令,這對於ls
上面的別名很有用,其中別名本身調用ls
.
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
這告訴您,當您執行 時ls
,除了您自己新增的任何其他參數之外,/bin/ls
還將使用 、 並將其包含在其參數清單中。--color=auto
答案2
alias
只需在 Shell 提示字元下鍵入即可。它應該輸出所有目前活動別名的清單。
或者,您可以鍵入alias [command]
以查看特定別名的別名,例如,如果您想找出別名ls
的別名,您可以執行以下操作alias ls
:
答案3
我真的很喜歡Ctrl++ Alt,E因為我從中學到了這個答案。它“擴展”當前輸入的命令行,這意味著它執行別名擴展(除其他外)。
這意味著什麼?它將目前可能在命令列上編寫的任何別名轉換為別名所代表的內容。
例如,如果我輸入:
$ ls
然後按Ctrl++ Alt,E就變成了
$ ls --time-style=locale --color=auto
答案4
你可以使用which
命令。
ls
如果您為as設定別名ls -al
然後輸入which ls
,您將看到:
ls: aliased to ls -al
。