Что делает опция --tty-only?

Что делает опция --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

Варианты не распознаются, например,дебиан:

Связанный контент