私のシステム管理者が次のグローバルエイリアスを作成したことに気づきました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
これらのオプションは、たとえば認識されません。Debian: