Вот решение, которое работает в любой реализации Unix / Linux, при условии, что оно будет следовать POSIX
стандарту. Это работает в некоторых не Unix средах, как cygwin
тоже.
echo 'ee' | tee /dev/tty | foo
Ссылка: Открытая группа базовых спецификаций, выпуск 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
echo 'ee' | tee /dev/stderr
работает, поэтому, если ваше требование "на экране" удовлетворяется и stderr, это подойдет.