Aquí hay una solución que funciona en cualquier implementación de Unix / Linux, suponiendo que cumpla con el POSIX
estándar. Funciona también en algunos entornos que no son Unix cygwin
.
echo 'ee' | tee /dev/tty | foo
Referencia: The Open Group Base Especificaciones Número 7 IEEE Std 1003.1, Edición 2013, §10.1 :
/ dev / tty
Asociado con el grupo de procesos de ese proceso, si lo hay. Es útil para programas o procedimientos de shell que desean asegurarse de escribir mensajes o leer datos desde el terminal, sin importar cómo se haya redirigido la salida. También se puede usar para aplicaciones que exigen el nombre de un archivo para la salida, cuando se desea la salida escrita y es agotador saber qué terminal está actualmente en uso. En cada proceso, un sinónimo para el terminal de control
Se ha informado que algunos entornos como Google Colab no se implementan /dev/tty
mientras que sus tty
comandos aún devuelven un dispositivo utilizable. Aquí hay una solución alternativa:
tty=$(tty)
echo 'ee' | tee $tty | foo
o con una antigua concha de Bourne:
tty=`tty`
echo 'ee' | tee $tty | foo
echo 'ee' | tee /dev/stderr
embargo, tenga en cuenta que funciona, por lo que si stderr también satisface su requisito "en pantalla" , eso funcionará.