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

3

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

    
por Blacklight Shining 28.09.2012 / 19:39

2 respostas

3

O GNU cat ignora -u porque sua saída é sempre sem buffer . Então, quando você pede uma saída sem buffer com -u , você a obtém (mas também a obtém mesmo quando não a pede).

O GNU tail tem 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á" seguido por uma guia, a cada segundo (sem novas linhas)

Em outro shell que fiz ( cat -T é semelhante a cat -v - mostra as guias como ^ I):

tail -f testtail | cat -T

que me dá:

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

atualizado a cada segundo.

    
por 01.04.2015 / 15:46
3

A opção cat do% BSD -u desativou o buffer de saída. De man cat :

-u      Disable output buffering.
    
por 28.09.2012 / 19:41