Which
我可以在別名上使用哪個命令嗎?
例子:
我有
alias chrome='google-chrome'
。我想which chrome
返回相同的東西which google-chrome
返回,即:
/usr/bin/google-chrome
那可能嗎?
如果您真的想
which
以這種方式行事,您可以將其重新定義為 shell 函式:which() { if [ -n "$(type "$1" | grep "is aliased")" ]; then command which $(type "$1" | awk ' {cmd=gensub("[\140\047]", "", "g" , $NF);print cmd}') else command which "$1" fi }
請注意,如果您的 shell 是 ,這應該可以工作
bash
,但如果您使用不同的 shell,則可能需要稍微修改該函式。
不要
which
用於此目的,或者更好 - 根本不要使用which
。用於type <alias_name>
查看別名擴展。用於type -a <command>
查看給定命令可以表示的所有可能類別 - 來自 $PATH 的程序、shell 內置程序、函式、別名。type -a echo
例如參見。編輯:
您還可以使用
alias <ALIAS_NAME>
表單查看別名擴展,例如:$ alias chrome alias chrome='google-chrome'
alias <ALIAS_NAME>='
在解析輸出後只獲取一部分,如下所示:$ alias chrome | sed "s,alias !#:1=',," | sed "s,'$,,"
在腳本中執行此操作之前,請確保比
alias <ALIAS_NAME>
返回零。