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

Was sind Pipes unter Linux? Wie funktioniert die Pipe-Umleitung?

Möglicherweise haben Sie eine Syntax wie cmd0 | cmd1 | cmd2 in Ihrem Terminal ziemlich oft.

Sie wissen wahrscheinlich auch, dass die Pipe-Umleitung verwendet wird, um die Ausgabe eines Befehls als Eingabe für den nächsten Befehl umzuleiten.

Aber weißt du, was darunter geht? Wie funktioniert die Pipe-Umleitung eigentlich?

Keine Sorge, denn heute werde ich Unix-Pipes entmystifizieren, damit Sie beim nächsten Date mit diesen schicken vertikalen Balken genau wissen, was passiert.

Hinweis:Ich habe an einigen Stellen den Begriff Unix verwendet, weil das Konzept der Pipes (wie so viele andere Dinge in Linux) von Unix stammt.

Pipes in Linux:Die allgemeine Idee

Hier ist, was Sie überall zum Thema „Was sind Unix-Pipes?“ sehen werden:

  • Unix-Pipes sind ein IPC-Mechanismus (Inter Process Communication), der die Ausgabe eines Programms an die Eingabe eines anderen Programms weiterleitet.

Nun, das ist die allgemeine Erklärung, die jeder gibt. Ich möchte tiefer einsteigen. Lassen Sie uns die vorherige Zeile technischer umformulieren, indem wir die Abstraktionen entfernen:

  • Unix-Pipes sind ein IPC-Mechanismus (Inter Process Communication), der die stdout entgegennimmt eines Programms und leitet diese an die stdin weiter eines anderen Programms über einen Puffer.

Viel besser. Das Entfernen der Abstraktion machte es viel sauberer und genauer. Sie können sich das folgende Diagramm ansehen, um zu verstehen, wie Pipe funktioniert:

Eines der einfachsten Beispiele des Pipe-Befehls besteht darin, einige Befehlsausgaben an den Befehl grep zu übergeben, um eine bestimmte Zeichenfolge zu suchen.

Beispielsweise können Sie nach Dateien suchen, deren Name txt wie folgt enthält:

Denken Sie daran:Pipe leitet stdout an stdin weiter, aber nicht als Befehlsargument

Eine sehr wichtige Sache zu verstehen ist, dass Pipe die stdout überträgt eines Befehls an stdin eines anderen, aber nicht als Befehlsargument. Ich erkläre es anhand eines Beispiels.

Wenn Sie cat verwenden Befehl ohne Argumente, wird standardmäßig von stdin gelesen . Hier ist ein Beispiel:

$ cat
Subscribe to Linux Handbook for more articles like this
^D
Subscribe to Linux Handbook for more articles like this

Hier habe ich cat verwendet ohne irgendwelche Dateien zu übergeben, also standardmäßig stdin . Als nächstes habe ich eine Zeile geschrieben und dann mit Strg+d mitgeteilt, dass ich mit dem Schreiben fertig bin (Strg+d impliziert EOF oder End Of File). Als ich mit dem Schreiben fertig war, las cat von stdin , und schrieb genau diese Zeile nach stdout .

Betrachten Sie nun den folgenden Befehl:

echo hey | cat

Der zweite Befehl entspricht NICHT cat hey . Hier die stdout , "hey", wird in einen Puffer gebracht und an die stdin übertragen von cat . Da es keine Befehlszeilenargumente gab, war cat standardmäßig stdin for read, und da war schon etwas in der stdin, also nahm der cat-Befehl es und gab es auf stdout aus .

Tatsächlich habe ich eine Datei namens hey erstellt und einige Inhalte darin abgelegt. Sie können den Unterschied deutlich im Bild unten sehen:

Typen von Pipes in Linux

Unter Linux gibt es zwei Arten von Pipes:

  • Unbenannte Pipes, auch anonyme Pipes genannt
  • Benannte Pipes

Lesen Sie die ganze Geschichte

Der Rest des Artikels ist nur für LHB-Mitglieder verfügbar. Sie können sich jetzt KOSTENLOS anmelden, um den Rest dieses Artikels zusammen mit dem Zugriff auf alle Beiträge nur für Mitglieder zu lesen. Außerdem abonnieren Sie unseren zweiwöchentlichen Linux-Newsletter.

AbonnierenSie haben bereits ein Konto?Melden Sie sich an
Linux
  1. So finden Sie heraus, was ein Linux-Befehl tut

  2. Pipes und Redirection in Linux - erklärt!

  3. Was bedeutet - in diesem Linux-Befehl?

  4. Wie leite ich zum Split-Befehl von Linux?

  5. Wie kann ich sehen, was meine am häufigsten verwendeten Linux-Befehle sind?

So finden Sie heraus, welche Geräte in Linux mit dem Netzwerk verbunden sind

Was sind Häfen? Wie überprüfe ich offene Linux-Ports?

ExplainShell – Finden Sie heraus, was jeder Teil eines Linux-Befehls tut

Was bedeutet Cat-Befehl unter Linux?

Was ist Source Command in Linux und wie funktioniert es?

Was ist der Grep-Befehl unter Linux? Warum wird es verwendet und wie funktioniert es?