Pipeline (Unix)
# Pipeline (Unix)

Eine Pipeline in unixoiden Betriebssystemen besteht aus Programmen, die über ihre Standard-Datenströme miteinander verkettet sind. Dabei „empfängt“ ein Programm über die Standardeingabe (stdin) die Standardausgabe (stdout) des jeweils vorherigen Programms in der Kette. Die einzelnen Programme werden nacheinander durch das jeweils vorherige aufgerufen.

In der Shell-Syntax wird ein Senkrechter Strich (|, im Unix-Jargon „Pipe“ oder „Pipe-Zeichen“ genannt) als Verkettungszeichen der einzelnen Programme verwendet:

Das Betriebssystem nutzt hierbei das Prinzip der „namenlosen Pipe“, die älteste und erste Technik der Interprozess­kommunikation.

## Beispiel

* Erzeuge mittels ls -dl *key* eine Liste aller Dateien im aktuellen Verzeichnis mit der Zeichenkette „key“ im Namen.
* Reduziere die ausgegebene Liste mit grep -v "failed" um jene Zeilen, die die Zeichenkette „failed“ enthalten.
* Gebe die resultierende Liste zum seitenweisen Betrachten mit less aus:

## Standardfehlerausgabe

Per Default sammelt die Pipeline die Standardfehlerausgaben (stderr) ihrer einzelnen Kindprozesse und leitet sie am Ende an die Kommandozeile weiter. Die alternative Schreibweise "|&" der C-Shell führt jedoch die Standardausgaben und die Standardfehlerausgaben der jeweiligen Kindprozesse zusammen und übergibt diese als Standardausgabe an den nächsten Prozess. Ergänzend dazu leitet die Pipeline in der Bourne-Shell seit Bash 4.0 die Standardfehlerausgaben mit der Notation 2>&1 in eine Datei um.

## Geschichte

Douglas McIlroy stellte während seiner Zeit in den Bell Labs (der Geburtsstätte von Unix) fest, dass sehr oft Benutzer die Ausgabe-Datei eines Programms als Eingabe-Datei für ein anderes nutzten. Er führte daher das Konzept der Pipe ein, welches Ken Thompson im Jahr 1973 in Version 3 Unix durch den Systemaufruf pipe und für die Shell durch die Pipe erweiterte.

Ken Thompson führte außerdem die obige Notation ein, welche die Beschreibung der Pipe-Syntax in Version 4 Unix stark vereinfachte.

Viele Betriebssysteme wie DOS, OS/2, Microsoft Windows, und BeOS implementierten später die Pipeline mit identischer Notation und Tony Hoare entwickelte das Konzept der Pipeline mit CSP weiter.

Das Computerprogramm Automator von Apple verkettet auch sich wiederholende Befehle mit Pipelines. Das Roboter-Icon trägt daher als Hommage an das ursprüngliche Unix-Konzept ein Rohr (Pipe) in seinen Händen.

