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 cat
que está instalado ignora o -u
sinalizador.
Responder1
GNU cat
ignora -u
porque 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 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á' 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
cat
A opção do BSD -u
desabilitou o buffer de saída. De man cat
:
-u Disable output buffering.