Pipes sind im quell­of­fe­nen Linux-Be­triebs­sys­tem ein mächtiges Werkzeug. So er­mög­li­chen Ihnen Linux-Pipes etwa, eine Reihe von Befehlen, die sich auf einen Da­ten­be­stand beziehen, se­quen­zi­ell ab­zu­ar­bei­ten bzw. Daten zwischen Befehlen effizient hin- und her­zu­be­we­gen. Der Vorteil: Komplexe Prozesse werden ver­ein­facht, da aus al­lein­ste­hen­den Befehlen ein re­gel­rech­tes „Befehls-Team“ wird. Erfahren Sie hier, wie Pipes in Linux im Detail funk­tio­nie­ren und warum dieser Befehl so hilfreich ist.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Was sind Linux-Pipes?

Der Begriff Pipe leitet sich vom eng­li­schen Wort „Pipeline“ ab, das übersetzt so viel wie „Rohr­lei­tung“ heißt. In der In­for­ma­tik ist eine Pipe ein Da­ten­strom, der zwischen zwei Prozessen abläuft, die entweder eng mit­ein­an­der verwandt sind oder auch keinen ge­mein­sa­men Ursprung haben. Das bedeutet, dass das Ergebnis, das von einem Programm aus­ge­wor­fen wird, als Eingabe für ein anderes Programm dient. Dies er­mög­licht es Ihnen, unter anderem größere Probleme in kleinere Teil­pro­ble­me auf­zu­tei­len und so eine bessere Übersicht zu erhalten.

In Linux gibt es zwei ver­schie­de­ne Arten von Pipes, die un­be­nann­ten Pipes oder „Unnamed Pipes“ und die benannten Pipes oder „Named Pipes“.

Während un­be­nann­te bzw. anonyme Pipes nur zwischen Prozessen verwendet werden, die eng mit­ein­an­der verwandt sind, er­mög­li­chen benannte Pipes oder FIFO (sie basieren auf dem Prinzip „First In – First Out“), die Kom­mu­ni­ka­ti­on zwischen zwei nicht ver­wand­ten Prozessen, die sich auch auf ver­schie­de­nen Rechnern innerhalb desselben Netzwerks befinden können. Im Gegensatz zu den un­be­nann­ten Pipes, er­mög­li­chen benannte Pipes auch die bi­di­rek­tio­na­le Kom­mu­ni­ka­ti­on und nicht nur die ein­sei­ti­ge Kom­mu­ni­ka­ti­on (ein Prozess schreibt, während der andere nur liest).

Hinweis

Die logische Ver­knüp­fung von Befehlen ist in der In­for­ma­tik natürlich nichts Un­ge­wöhn­li­ches. Mit dem Linux-In-Befehl ist es zum Beispiel möglich, auf ein­fachs­te Art die Ver­knüp­fung mit einer Datei oder mit einem Ver­zeich­nis her­zu­stel­len. Erfahren Sie in unserem Über­blicks­ar­ti­kel, welche anderen wichtigen Linux-Befehle Sie unbedingt kennen sollten.

Die Syntax von Linux-Pipes und An­wen­dungs­bei­spie­le

Damit Sie Pipes in Linux richtig einsetzen können, ist es hilfreich, zunächst die Syntax zu verstehen. Im Folgenden sehen Sie zuerst den Aufbau des Pipe-Befehls und dann Beispiele, wie er in Ihrem Terminal bzw. in Ihrer Kom­man­do­leis­te aussieht.

Hinweis

Unsere Anleitung bezieht sich auf die weit ver­brei­te­ten Ubuntu-In­stal­la­tio­nen, die kostenlos er­hält­lich sind und re­gel­mä­ßig ak­tua­li­siert werden.

Befehl-1 | Befehl-2 | …| Befehl-N

Wie Sie oben sehen, ist die Syntax der un­be­nann­ten Pipe recht simpel. Sie besteht aus dem Symbol „|“, das z. B. zwischen zwei anderen Befehlen steht. Im Beispiel unten ist die Pipe nur temporär gültig.

$ cat contents.txt |grep file
0 Aug  9 13:55  file1
0 Aug  9 13:55  file2
0 Aug  9 13:55  file3
0 Aug  9 13:55  file4
0 Aug  9 13:55  file5
$ cat contents.txt |grep "file"|awk '{print $8}'
file1
file2
file3
file4
file5
$ cat contents.txt |wc -l
8
$

Oben enthält contents.txt eine Liste aller Dateien in einem be­stimm­ten Ver­zeich­nis – genauer gesagt, die Ausgabe des Befehls ls -al. Zunächst werden die Da­tei­na­men mit dem Schlüs­sel­wort „file“ aus contents.txt via Piping abgefragt, sodass die Ausgabe des Befehls cat als Eingabe für den Befehl grep dient. An­schlie­ßend führen wir per Piping den Befehl awk aus, der die 8. Spalte der ge­fil­ter­ten Ausgabe des Befehls grep anzeigt. Wir können auch die Anzahl der Zeilen in contents.txt mit dem Befehl wc -l zählen.

Tipp

Mit dem Befehl grep lassen sich Zeilen aus Code- und Log-Dateien nach Strings durch­su­chen. Möchten Sie in der Kom­man­do­leis­te ganz einfach eine Linux-Datei suchen und finden, verwenden Sie diesen Befehl.

Während eine un­be­nann­te Linux-Pipe nur für einen Prozess gültig ist, sorgt eine benannte Linux-Pipe dafür, dass der Befehl die gesamte Zeit gültig ist, bis Sie das System her­un­ter­fah­ren oder löschen. Die richtige Syntax sieht hier wie folgt aus:

mkfifo <pipe-name>

oder

mknod p <pipe-name>

Stellen Sie sich vor, Sie haben einen Prozess, der in einem Terminal läuft und eine Ausgabe erzeugt. Nun möchten Sie diesen Output an ein zweites Terminal wei­ter­lei­ten. Hier ist eine benannte Pipe eine große Hilfe. Um eine Stan­dard­aus­ga­be eines be­lie­bi­gen Befehls an einen anderen Prozess um­zu­lei­ten, verwenden Sie das Symbol „>“. Um eine Stan­dard­ein­ga­be eines be­lie­bi­gen Befehls um­zu­lei­ten, verwenden Sie das Symbol „<“. Im folgenden Beispiel benennen Sie im ersten Terminal die Pipe.

$ mkfifo benannte-pipe
$ ls > benannte-pipe

Nun geben Sie im zweiten Terminal den folgenden Code ein, um den Output zu sehen.

$ cat < benannte-pipe

Wenn Sie also das nächste Mal mit Befehlen am Linux-Terminal arbeiten und Daten zwischen Befehlen ver­schie­ben müssen, können Sie dies mit einer un­be­nann­ten oder benannten Pipe hof­fent­lich schnell und einfach erledigen.

Tipp

Nutzen Sie das Linux-Be­triebs­sys­tem und suchen nach einem um­fas­sen­den Web­hos­ting-Paket, mit dem Sie sämtliche Teile des Pro­gramm­codes selbst schreiben oder aber einen in­tui­ti­ven Baukasten verwenden können? Das Linux-Hosting von IONOS bietet Ihnen ska­lier­ba­re Per­for­mance, DDoS pro­tec­tion, Geo­red­un­danz und viele weitere Features.

Zum Hauptmenü