我剛剛意識到我的系統管理員已經為以下物件創建了一個全域別名which
:
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
線上which
幫助頁只是說:
如果不在 tty 上,則停止處理右側的選項。
這是什麼意思?
答案1
設定:
$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a
如果您想要.
交互運行時的版本,但~
需要重定向時的版本,您可以使用它作為別名:
/usr/bin/which --show-tilde --tty-only --show-dot
演示:
# interactive / on a tty
$ /usr/bin/which --show-tilde --tty-only --show-dot a
./a
# not interactive / redirected to a file
$ /usr/bin/which --show-tilde --tty-only --show-dot a > output
$ cat output
~/a
--tty-only
只有當輸出為 tty 時,才會考慮您在後面指定的所有選項。
答案2
這意味著如果輸出which
為不是參考終端,然後執行不是過程--read-alias
,--show-dot
和--show-tilde
.
通常是管道、普通文件等。
which watch | foo # not a tty
which watch > foo # not a tty
which watch # tty
which watch >&2 # tty
這些選項在例如下不被識別德比安: