Dies ist im Grunde eine negative Antwort. Es scheint, dass weder ddnoch mbuffernoch gar nichts pvfunktioniert, insbesondere wenn die vom Hersteller generierte Datenrate sehr unterschiedlich sein kann. Ich gebe einige Testfälle unten. Warten Sie nach der Eingabe des Befehls etwa 10 Sekunden und geben Sie dann Folgendes ein >(um zum Ende der Daten zu gelangen, dh bis zum Ende der Eingabe zu warten).
zsh -c 'echo foo0; sleep 3; \
printf "Line %060d\n" {1..123456}; \
echo foo1; sleep 5; \
echo foo2' | dd bs=64K | less
Hier muss man nach dem Tippen >5 Sekunden warten, was bedeutet, dass der Produzent (zsh script) vor dem blockiert hat sleep 5. Das Erhöhen der bsGröße auf z. B. 32 MB ändert nichts am Verhalten, obwohl der 32-MB-Puffer groß genug ist. Ich vermute, das liegt daran, dass die ddAusgabe blockiert wird, anstatt mit der Eingabe fortzufahren. Verwenden oflag=nonblockist keine Lösung, da hierdurch Daten verworfen werden.
zsh -c 'echo foo0; sleep 3; \
printf "Line %060d\n" {1..123456}; \
echo foo1; sleep 5; \
echo foo2' | mbuffer -q | less
Mit mbufferist das Problem , dass die erste Zeile (foo0) nicht sofort angezeigt. Es scheint keine Option zu geben, um die Zeilenpufferung bei der Eingabe zu aktivieren.
zsh -c 'echo foo0; sleep 3; \
printf "Line %060d\n" {1..123456}; \
echo foo1; sleep 5; \
echo foo2' | pv -q -B 32m | less
Mit pvist das Verhalten ähnlich dd. Schlimmer noch, ich vermute, dass es falsche Dinge mit dem Terminal tut, da manchmal lesskeine Eingaben mehr vom Terminal empfangen werden können. zum Beispiel kann man es nicht mit beenden q.