Gibt es eine Cat-Alternative, die ungepufferte Ausgabe unterstützt?

Gibt es eine Cat-Alternative, die ungepufferte Ausgabe unterstützt?

Ich suche nach einem Programm, das stdin nach stdout kopiert und dabei Steuerzeichen (wie cat -v) anzeigt und ohne auf ein EOF zu warten (die Eingabe kommt von einem tail -f). Ich habe GNU|Linux; das catinstallierte ignoriert das -uFlag.

Antwort1

GNU catignoriert -u, da seine Ausgabe istimmer ungepuffert. Wenn Sie also mit eine ungepufferte Ausgabe anfordern -u, erhalten Sie diese (aber Sie erhalten sie auch, wenn Sie nicht danach fragen).

GNU tailhat dasselbe, stets ungepufferte Verhalten.

Um dies zu beweisen, habe ich in einer Shell Folgendes getan:

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

das jede Sekunde das Wort „Hallo“ gefolgt von einem Tabulator anfügt (ohne Zeilenumbrüche)

In einer anderen Shell habe ich Folgendes gemacht ( cat -Tist ähnlich wie cat -v– es zeigt Tabs als ^I an):

tail -f testtail | cat -T

was mir gibt:

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

jede Sekunde aktualisiert.

Antwort2

catDie Option von BSD -uhat die Ausgabepufferung deaktiviert. Von man cat:

-u      Disable output buffering.

verwandte Informationen