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 cat
installierte ignoriert das -u
Flag.
Antwort1
GNU cat
ignoriert -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 tail
hat 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 -T
ist ä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
cat
Die Option von BSD -u
hat die Ausgabepufferung deaktiviert. Von man cat
:
-u Disable output buffering.