Was bewirkt die Option --tty-only?

Was bewirkt die Option --tty-only?

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 whichManpage 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-onlywerden nur berücksichtigt, wenn die Ausgabe ein TTY ist.

Antwort2

Das würde bedeuten, dass wenn die Ausgabe whichfürnichtauf ein Terminal verweisen, dannnichtProzess --read-alias, --show-dotund --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:

verwandte Informationen