GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sind Linux-Dienstprogramme beim Ausführen von Pipe-Befehlen intelligent?

Ich habe gerade ein paar Befehle in einem Terminal ausgeführt und mich gefragt, ob Unix/Linux beim Ausführen von Pipe-Befehlen Abkürzungen verwendet?

Nehmen wir zum Beispiel an, ich habe eine Datei mit einer Million Zeilen, von denen die ersten 10 hello world enthalten . Wenn Sie den Befehl grep "hello world" file | head stoppt der erste Befehl, sobald er 10 Zeilen findet, oder durchsucht er zuerst die gesamte Datei?

Akzeptierte Antwort:

Art von. Die Shell hat keine Ahnung, was die von Ihnen ausgeführten Befehle tun werden, sie verbindet nur die Ausgabe des einen mit der Eingabe des anderen.

Wenn grep findet mehr als 10 Zeilen, die „Hallo Welt“ sagen, dann head wird alle 10 Zeilen haben, die es will, und die Pipe schließen. Dies wird grep verursachen mit einem SIGPIPE getötet werden, sodass er nicht mit dem Scannen einer sehr großen Datei fortfahren muss.


Linux
  1. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

  2. Was sind Sparse-Dateien in Linux?

  3. Führen Sie Shell-Befehle aus einem Programm aus, das in WINE ausgeführt wird

  4. Überwachen von Dateiänderungen c++ linux

  5. Wie vermeide ich die Warnmeldung „Sind die gleiche Datei“ bei der Verwendung von cp unter Linux?

Linux-Dateibefehl:Was macht er und wie wird er verwendet?

Einige zufällige Einzeiler-Linux-Befehle [Teil 3]

5 Befehle zum Anzeigen des Inhalts einer Datei in der Linux-Befehlszeile

Von Linux-Systemadministratoren häufig verwendete Linux-Befehle – Teil 5

Was sind Inodes unter Linux?

Werden Dateideskriptoren beim Fork()ing geteilt?