¿Existe una alternativa cat que admita salida sin búfer?

¿Existe una alternativa cat que admita salida sin búfer?

Estoy buscando un programa para copiar stdin a stdout mientras muestro caracteres de control (como cat -v) y sin esperar un EOF (la entrada es de a tail -f). Tengo GNU|Linux; el catque está instalado ignora la -ubandera.

Respuesta1

GNU catignora -uporque su salida essiempre sin búfer. Entonces, cuando solicitas una salida sin búfer con -u, la obtienes (pero también la obtienes incluso cuando no la solicitas).

GNU tailtiene el mismo comportamiento, siempre sin búfer.

Para probar esto, en un caparazón hice:

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

que añade la palabra "hola" seguida de una tabulación, cada segundo (sin nuevas líneas)

En otro shell lo hice ( cat -Tes similar a cat -v: muestra pestañas como ^I):

tail -f testtail | cat -T

lo que me da:

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

actualizado cada segundo.

Respuesta2

catLa opción de BSD -udeshabilitó el almacenamiento en búfer de salida. De man cat:

-u      Disable output buffering.

información relacionada