Letzte Änderung:
20.03.2012



Spruch des Tages

Wenn du einen verhungernden Hund aufliest und machst ihn satt, dann wird er dich nicht beißen. Das ist der Unterschied zwischen Hund und Mensch. Mark Twain
Umleitung und Pipes


Umleitung und Pipes



Linux verfügt über drei Standard-Kanäle:

0 stdin   Standard-Eingabe
1 stdout  Standard-Ausgabe
2 stderr  Standard-Fehler

Ein Pipe verknüpft die Standardausgabe eines Befehls mit der Standardeingabe eines anderen Befehls. Mit anderen Worten ausgedrückt, wird die Standardausgabe zur Standardeingabe für den nach | stehenden Befehl.

Beispiele:

#cat Datei|less
#ls -lisa|more
#ps -ax|head
Beispiel:

pipe

Mit einem > wird die Standardausgabe in eine Datei umgeleitet, die neu angelegt wird, auch wenn sie bereits existiert.

Beispiel:

pipe

Mit einem >> wird die Standardausgabe in eine Datei umgeleitet, wenn sie bereits existiert, wird an das Ende der Datei angehangen. Beispiel:

pipe

Mit einem pipe wird die folgende Datei zur Standardeingabe. Beispiel:

pipe

In dem nachfolgenden Beispiel wird die Datei /etc/passwd nach sort umgeleitet und das Ergebnis wird in die angegebene Datei umgeleitet:

pipe

Mit pipe wird erreicht, dass eine Anweisung abgearbeitet wird, bis eine "exit"-Anweisung erfolgt:

pipe

Mit 2> wird der Fehlerkanal in eine neu angelegte Datei umgeleitet und mit 2>> wird der Fehlerkanal an eine bestehende Datei angehangen.

Beispiel:

pipe

Mit 2>Pipes1 wird der Standardfehlerkanal an die gleiche Adresse, wie der Standardausgabekanal geschickt. In dem nachfolgenden Beispiel erfolgt die Bündelung in der Schreibweise nach der Umleitung.

Beispiel:

pipe

Es geht auch umgekehrt, mit 1>Pipes2 wird erreicht, dass die Ausgabe des Standardausgabekanals an die Zieladresse des Standardeingabekanals geschickt wird.

Mit dem Befehl Befehl >/dev/null 2>Pipes1 wird erreicht, dass jegliche Ausgabe an das /dev/null (Null-Device) geschickt wird. Der kleine Nebeneffekt ist, dass jegliche Ausgabe verloren geht, also auch entfernte Terminals nicht "mithören" können.

tee

Das Kommando tee leitet den Input der Standard-Eingabe weiter an die Standard-Ausgabe und gleichzeitig in eine Datei.

Beispiel:

tee

Ein Kommando gibt standardmäßig einen Fehlercode zurück. Bei erfolgreicher Ausführung ist dies der Wert 0 = true. Wenn ein Fehler verursacht wurde, wird der Wert 1 = false zurückgegeben.

Bei der befehl1 PipesPipes befehl2 - Verknüpfung wird befehl2 nur ausgeführt, wenn der befehl1 den Exit-Code 0 zurück gibt, also erfolgreich beendet werden konnte.

Bei der befehl1 || befehl2 - Verknüpfung wird der befehl2 nur ausgeführt, wenn der befehl1 einen Fehler verursacht hat.

Bei der befehl1 ; befehl2 - Verknüpfung wird der befehl2 ausgeführt, unabhängig davon, ob der befehl1 einen Fehler verursacht hat oder nicht.

Beispiel:

pipe