# Linux-Pipes erklärt

Pipes sind im quelloffenen [Linux-Betriebssystem](https://www.ionos.de/digitalguide/server/knowhow/linux-das-steckt-hinter-den-open-source-betriebssystemen/) 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.

## 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](https://www.ionos.de/digitalguide/online-marketing/verkaufen-im-internet/first-in-first-out/ "First In First Out") (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](https://www.ionos.de/digitalguide/server/konfiguration/linux-ln-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](https://www.ionos.de/digitalguide/server/konfiguration/linux-befehle-terminal-kommandos-im-ueberblick/) 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](https://www.ionos.de/digitalguide/server/knowhow/ubuntu-das-linux-system-fuer-jedermann/)-Installationen, die kostenlos erhältlich sind und regelmäßig aktualisiert werden.

```none
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.

```none
$ 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](https://www.ionos.de/digitalguide/server/konfiguration/linux-grep-befehl/ "Linux: grep-Befehl") lassen sich Zeilen aus Code- und Log-Dateien nach Strings durchsuchen. Möchten Sie in der Kommandoleiste ganz einfach eine [Linux-Datei suchen](https://www.ionos.de/digitalguide/server/konfiguration/linux-datei-suchen/ "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:

```none
mkfifo <pipe-name>
```

oder

```none
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 „&gt;“. Um eine **Standardeingabe** eines beliebigen Befehls umzuleiten, verwenden Sie das Symbol „“. Im folgenden Beispiel benennen Sie im ersten Terminal die Pipe.

```none
$ mkfifo benannte-pipe
$ ls > benannte-pipe
```

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

```none
$ 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](https://www.ionos.de/hosting/linux-hosting "IONOS Hosting-Pakete entdecken") bietet Ihnen skalierbare Performance, DDoS protection, Georedundanz und viele weitere Features.


This is a markdown version of: [https://www.ionos.de/digitalguide/server/konfiguration/linux-pipes/](https://www.ionos.de/digitalguide/server/konfiguration/linux-pipes/) for AI/LLM consumption.