Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Kommandos miteinander verknüpfen

&pagelevel(4)&pagelevel

Sie können mehrere Kommandos aneinanderhängen:

  • Mit dem Zeichen | können Sie zwei Kommandos zu einer Pipe verbinden.

  • Mit den Zeichen ; oder & oder && oder || können Sie mehrere Kommandos oder Pipes zu einer Kommandofolge verbinden.

Pipe

Eine Pipe ist eine Folge von zwei oder mehr Kommandos, die jeweils durch das Zeichen | verbunden sind. Eine Pipe zwischen zwei Kommandos lenkt die Standard-Ausgabe des ersten Kommandos auf die Standard-Eingabe des zweiten Kommandos um (siehe Abschnitt „Eingabe und Ausgabe eines Kommandos umlenken“). Deshalb müssen die so verbundenen Kommandos folgende Bedingungen erfüllen:

  • Das erste Kommando einer Pipe muss auf die Standard-Ausgabe schreiben.

  • Das nächste Kommando einer Pipe muss von der Standard-Eingabe lesen.

  • Wenn die Pipe aus mehr als zwei Kommandos besteht, müssen alle Kommandos nach dem ersten und vor dem letzten Kommando der Pipe von der Standard-Eingabe lesen und auf die Standard-Ausgabe schreiben.

Die POSIX-Shell startet alle Kommandos der Pipe gleichzeitig als eigenständige parallele Prozesse. In einem Ein-Prozessor-System kann der Prozessor aber pro Zeiteinheit immer nur einen dieser Prozesse bearbeiten. Daher wechseln sich die einzelnen Prozesse am Prozessor ab.

Nur der Prozess, der zum ersten Kommando der Pipe gehört, erhält seine Eingabe nicht von einem anderen Prozess.
Nur der Prozess, der zum letzten Kommando der Pipe gehört, leitet seine Ausgabe nicht an einen anderen Prozess weiter.

Die POSIX-Shell wartet so lange, bis das letzte Kommando der Pipe beendet ist. Erst dann bearbeitet sie weitere Eingaben.

Kommandofolgen

Eine Kommandofolge ist die Aneinanderreihung einer oder mehrerer Pipes, die durch eines der Symbole

; & && ||

getrennt und optional durch

; & |&

abgeschlossen werden. Die Symbole ; & und |& haben gleichen Vorrang, der niedriger ist als der von && und ||, die beide ebenfalls gleichen Vorrang haben. Der Strichpunkt ; nach einer Pipe steht für sequentielle Ausführung der Pipe, während das kommerzielle Und & asynchrone Ausführung bedeutet, d.h. die Shell wartet nicht auf die Beendigung der Pipe. Das Symbol |& nach einer Kommandofolge veranlasst die asynchrone Ausführung der Pipe oder des Kommandos mit einer bidirektionalen Pipe zur Vater-Shell.

Im folgenden steht der Begriff Kommando für ein Kommando oder eine Pipe. Die Zeichen haben folgende Wirkung:

Zeichen

Wirkung

;

Die POSIX-Shell bearbeitet das nächste Kommando erst, wenn das vorausgehende beendet ist. Sie gibt aber kein Bereitzeichen aus.

&

Die POSIX-Shell startet das vorausgehende Kommando im Hintergrund und bearbeitet sofort das nachfolgende Kommando.
Die POSIX-Shell lenkt die Standard-Eingabe aller Hintergrund-Kommandos auf eine Datei mit den Eigenschaften von /dev/null um. Sie können die Standard-Eingabe eines Hintergrund-Kommandos aber auch auf eine andere Datei umlenken.

&&

Die POSIX-Shell führt das nachfolgende Kommando nur aus, wenn das vorausgehende Kommando als Endestatus den Wert 0 zurückgegeben hat.

||

Die POSIX-Shell führt das nachfolgende Kommando nur aus, wenn das vorausgehende Kommando als Endestatus einen Wert ungleich 0 zurückgegeben hat.

|&

Die POSIX-Shell startet das vorausgehende Kommando im Hintergrund mit einer bidirektionalen Pipe zur Vater-Shell.