Вот решение, которое работает в любой реализации Unix / Linux, при условии, что оно будет следовать стандарту POSIX
.Он работает в некоторых не Unix-средах, таких как cygwin
.
echo 'ee' | tee /dev/tty | foo
Ссылка: Базовые спецификации Open Group Issue 7 IEEE Std 1003.1, издание 2013 г., §10.1 :
/ dev / tty
Связан с группой процессов этого процесса, если таковая имеется. Это полезно для программ или процедур оболочки, которые хотят быть уверенными в записи сообщений на или чтении данных с терминала, независимо от того, как перенаправлен вывод. Он также может использоваться для приложенийкоторые требуют имя файла для вывода, когда требуется печатный вывод, и утомительно выяснять, какой терминал используется в данный момент.В каждом процессе используется синоним управляющего терминала
В некоторых средах, таких как Google Colab, не было реализовано /dev/tty
, хотя их команда tty
возвращает работоспособноеустройство.Вот обходной путь:
tty=$(tty)
echo 'ee' | tee $tty | foo
или с древней оболочкой Борна:
tty=`tty`
echo 'ee' | tee $tty | foo