Existe uma alternativa cat que suporte saída sem buffer?

Existe uma alternativa cat que suporte saída sem buffer?

Estou procurando um programa para copiar stdin para stdout enquanto mostra caracteres de controle (como cat -v) e sem esperar por um EOF (a entrada é de a tail -f). Eu tenho GNU|Linux; o catque está instalado ignora o -usinalizador.

Responder1

GNU catignora -uporque sua saída ésempre sem buffer. Então, quando você solicita uma saída sem buffer com -u, você a obtém (mas também a obtém mesmo quando não a solicita).

GNU tailtem o mesmo comportamento sempre sem buffer.

Para provar isso, em um shell eu fiz:

while :; do echo -ne "hello\t"; sleep 1;done > testtail

que acrescenta a palavra 'olá' seguida por uma tabulação, a cada segundo (sem novas linhas)

Em outro shell eu fiz ( cat -Té semelhante a cat -v- mostra abas como ^I):

tail -f testtail | cat -T

o que me dá:

hello^Ihello^Ihello^Ihello^I ...

atualizado a cada segundo.

Responder2

catA opção do BSD -udesabilitou o buffer de saída. De man cat:

-u      Disable output buffering.

informação relacionada