Linux-Pipes erklärt

Pipes sind im quelloffenen Linux-Betriebssystem ein mächtiges Werkzeug. So ermöglichen Ihnen Linux-Pipes etwa, eine Reihe von Befehlen, die sich auf einen Datenbestand beziehen, sequenziell abzuarbeiten bzw. Daten zwischen Befehlen effizient hin- und herzubewegen. Der Vorteil: Komplexe Prozesse werden vereinfacht, da aus alleinstehenden Befehlen ein regelrechtes „Befehls-Team“ wird. Erfahren Sie hier, wie Pipes in Linux im Detail funktionieren und warum dieser Befehl so hilfreich ist.

Mehr als nur eine Domain!

Hier finden Sie Ihre perfekte Domain - z.B. .de Domain + persönlicher Berater

E-Mail-Postfach
24/7 Support
Wildcard SSL

Was sind Linux-Pipes?

Der Begriff Pipe leitet sich vom englischen Wort „Pipeline“ ab, das übersetzt so viel wie „Rohrleitung“ heißt. In der Informatik ist eine Pipe ein Datenstrom, der zwischen zwei Prozessen abläuft, die entweder eng miteinander verwandt sind oder auch keinen gemeinsamen Ursprung haben. Das bedeutet, dass das Ergebnis, das von einem Programm ausgeworfen wird, als Eingabe für ein anderes Programm dient. Dies ermöglicht es Ihnen, unter anderem größere Probleme in kleinere Teilprobleme aufzuteilen und so eine bessere Übersicht zu erhalten.

In Linux gibt es zwei verschiedene Arten von Pipes, die unbenannten Pipes oder „Unnamed Pipes“ und die benannten Pipes oder „Named Pipes“.

Während unbenannte bzw. anonyme Pipes nur zwischen Prozessen verwendet werden, die eng miteinander verwandt sind, ermöglichen benannte Pipes oder FIFO (sie basieren auf dem Prinzip „First In – First Out“), die Kommunikation zwischen zwei nicht verwandten Prozessen, die sich auch auf verschiedenen Rechnern innerhalb desselben Netzwerks befinden können. Im Gegensatz zu den unbenannten Pipes, ermöglichen benannte Pipes auch die bidirektionale Kommunikation und nicht nur die einseitige Kommunikation (ein Prozess schreibt, während der andere nur liest).

Hinweis

Die logische Verknüpfung von Befehlen ist in der Informatik natürlich nichts Ungewöhnliches. Mit dem Linux-In-Befehl ist es zum Beispiel möglich, auf einfachste Art die Verknüpfung mit einer Datei oder mit einem Verzeichnis herzustellen. Erfahren Sie in unserem Überblicksartikel, welche anderen wichtigen Linux-Befehle Sie unbedingt kennen sollten.

Die Syntax von Linux-Pipes und Anwendungsbeispiele

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 Kommandoleiste aussieht.

Hinweis

Unsere Anleitung bezieht sich auf die weit verbreiteten Ubuntu-Installationen, die kostenlos erhältlich sind und regelmäßig aktualisiert werden.

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

Wie Sie oben sehen, ist die Syntax der unbenannten 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 bestimmten Verzeichnis – genauer gesagt, die Ausgabe des Befehls ls -al. Zunächst werden die Dateinamen mit dem Schlüsselwort „file“ aus contents.txt via Piping abgefragt, sodass die Ausgabe des Befehls cat als Eingabe für den Befehl grep dient. Anschließend führen wir per Piping den Befehl awk aus, der die 8. Spalte der gefilterten 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 durchsuchen. Möchten Sie in der Kommandoleiste ganz einfach eine Linux-Datei suchen und finden, verwenden Sie diesen Befehl.

Während eine unbenannte 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 herunterfahren 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 weiterleiten. Hier ist eine benannte Pipe eine große Hilfe. Um eine Standardausgabe eines beliebigen Befehls an einen anderen Prozess umzuleiten, verwenden Sie das Symbol „>“. Um eine Standardeingabe eines beliebigen Befehls umzuleiten, 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 verschieben müssen, können Sie dies mit einer unbenannten oder benannten Pipe hoffentlich schnell und einfach erledigen.

Tipp

Nutzen Sie das Linux-Betriebssystem und suchen nach einem umfassenden Webhosting-Paket, mit dem Sie sämtliche Teile des Programmcodes selbst schreiben oder aber einen intuitiven Baukasten verwenden können? Das Linux-Hosting von IONOS bietet Ihnen skalierbare Performance, DDoS protection, Georedundanz und viele weitere Features.