which 的 --tty-only 選項有什麼作用?

which 的 --tty-only 選項有什麼作用?

我剛剛意識到我的系統管理員已經為以下物件創建了一個全域別名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

這些選項在例如下不被識別德比安:

相關內容