+--------------------+ +------+ +----------+
| stdout |·······→| less |——————→| |
| somecommand | +------+ | terminal |
| stderr |——————————————————————→| |
+--------------------+ +----------+
Wenn somecommand
druckt Text nur Standardfehler, dann , wenn Sie laufen somecommand | less
, somecommand
und less
sind die Anzeige sowohl auf dem Terminal. Die Ausgabe des Befehls auf seinem stderr wird nicht less
direkt an das Terminal gesendet, da er nicht umgeleitet wird. Zuerst wird die Ausgabe von somecommand
Bildlaufvorgängen durch weniger initialisiert und die Eingabeaufforderungszeile angezeigt. Wenn somecommand
weniger fertig ist, merkt man, dass die Eingabe abgeschlossen ist (weil das Rohr geschlossen ist). Vielleicht möchten Sie ein bisschen experimentieren: Ausführen
{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }
und Variationen der Schlafzeiten, um eine somecommand
Produktionsleistung zu erzielen, bevor oder nachdem weniger fertig ist, und um zu sehen, was passiert, wenn das Rohr geschlossen ist.
Gilles 'SO - hör auf böse zu sein'
quelle