Head wartet vor dem Drucken auf volle Standardeingabe

Head wartet vor dem Drucken auf volle Standardeingabe

Wenn man rennt

ls | head

head scheint auf die vollständige Ausgabe des weitergeleiteten Befehls zu warten, bevor es auf dem Bildschirm gedruckt wird. Dies ist unerwünscht, wenn die Ausführung des Befehls sehr lange dauert, z. B. wenn Sie ls in einem Verzeichnis ausführen, das Millionen von Dateien enthält.

Wenn man jedoch läuft

find | head

head wartet NICHT auf die vollständige Ausgabe, bevor es mit dem Drucken auf dem Bildschirm beginnt – es geschieht scheinbar in Echtzeit.

Meine Frage ist folgende: Was ist der Unterschied zwischen find und ls, der dieses unterschiedliche Verhalten verursacht? Zweitens: Gibt es einen Ersatzbefehl (für ls ODER für head), mit dem ich sofort den Kopf einer langen Verzeichnisliste übernehmen kann?

Antwort1

Es ist nicht headdie Schuld von , sondern die lsvon .  lssortiert seine Ausgabe fast immer (standardmäßig nach Namen, auf Wunsch nach Datum). Und es liegt in der Natur jeder Sortierung, dass sie keine Ausgabe erzeugen kann, bis sie die gesamte Eingabe gelesen hat.  findsortiert seine Ausgabe nicht, damit sie schneller mit der Erzeugung beginnen kann.

Sie hätten dies selbst feststellen können, indem Sie einfach

ls

Und

find

und beobachten Sie den Unterschied in der Reaktionszeit.

Übrigens können Sie lsdurch Angabe von eine Liste von Verzeichnissen ohne Sortierung erhalten -U.

verwandte Informationen