Ось рішення, яке працює у будь-якій реалізації 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, це буде зроблено.