Mir ist gerade aufgefallen, dass mein Systemadministrator einen globalen Alias für Folgendes erstellt hat which
:
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
Auf der which
Manpage steht nur:
Beenden Sie die Verarbeitung der Optionen auf der rechten Seite, wenn Sie nicht auf TTY sind.
Was bedeutet das?
Antwort1
Aufstellen:
$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a
Wenn Sie die .
Version bei interaktiver Ausführung, aber die ~
Version bei Umleitung möchten, könnten Sie dies als Alias verwenden:
/usr/bin/which --show-tilde --tty-only --show-dot
Demo:
# 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
Alle Optionen, die Sie danach angeben, --tty-only
werden nur berücksichtigt, wenn die Ausgabe ein TTY ist.
Antwort2
Das würde bedeuten, dass wenn die Ausgabe which
fürnichtauf ein Terminal verweisen, dannnichtProzess --read-alias
, --show-dot
und --show-tilde
.
Normalerweise handelt es sich dabei um eine Pipe, eine normale Datei usw.
which watch | foo # not a tty
which watch > foo # not a tty
which watch # tty
which watch >&2 # tty
Die Optionen werden nicht anerkannt unter zBDebian: