Aqui está uma solução que funciona em qualquer implementação Unix / Linux, assumindo que ela se preocupa em seguir o POSIX
padrão. Também funciona em alguns ambientes não Unix cygwin
.
echo 'ee' | tee /dev/tty | foo
Referência: The Open Group Base Specifications Edição 7 IEEE Std 1003.1, 2013 Edition, §10.1 :
/ dev / tty
Associado ao grupo de processos desse processo, se houver. É útil para programas ou procedimentos de shell que desejam garantir a gravação de mensagens ou a leitura de dados do terminal, independentemente de como a saída foi redirecionada. Também pode ser usado para aplicativos que exigem o nome de um arquivo para saída, quando a saída digitada é desejada e é cansativo descobrir qual terminal está atualmente em uso. Em cada processo, um sinônimo para o terminal de controle
Foi relatado que alguns ambientes como o Google Colab não implementam /dev/tty
enquanto ainda têm seu tty
comando retornando um dispositivo utilizável. Aqui está uma solução alternativa:
tty=$(tty)
echo 'ee' | tee $tty | foo
ou com uma concha Bourne antiga:
tty=`tty`
echo 'ee' | tee $tty | foo
echo 'ee' | tee /dev/stderr
funciona, portanto, se o seu requisito "na tela" também for atendido pelo stderr, isso funcionará.