Ein-Ausgabe Umleitung
Die Ein- und Ausgabekanäle können unter Unix/Linux umgeleitet werden:
Eingabekanal (stdin)
Jedes Programm, das auf der Kommandozeile auf Eingaben wartet, bekommt die auf der Tastatur gedrückten Zeichen über den Standardeingabekanal geschickt.
Ausgabekanal (stdout)
Die Ausgabe eines Kommandozeilenprogramms wird über den Standardausgabekanal an das Terminal gegeben und dort angezeigt.
Errorkanal (stderr)
Eventuelle Fehlermeldungen erreichen das Terminal über
den Standarderrorkanal, damit die Ausgabe eines Programmes
nicht mit den Fehlermeldungen vermischt wird.
Das wäre sehr unpraktisch, weil die Ausgabe eines
Programms häufig von einem anderen Programm weiter bearbeitet
wird.
Ausgabeumleitung
Das grösser-als Zeichen bzw. die schliessende spitze Klammer (>) deutet an, dass der Standardausgabe-Kanal eines Programms mit einer Datei verbunden werden soll.
Beispielsweise soll die Ausgabe des Kommandos ls -l /usr/bin
in die Datei programmdateien
umgeleitet werden:
$ ls -l /usr/bin > programmdateien
$ ls -l /usr/bin >> programmdateien
Dieser Befehl bewirkt, dass der Standardausgabekanal für das Kommando
ls -l /usr/bin
mit der Datei programmdateien
verbunden wird.
Wenn zwei grösser-als Zeichen hintereinder stehen bedeutet das, dass die Standardausgabe an die Datei angehängt werden soll.
Das Kommando gibt nichts am Terminal aus. Nach der Ausführung
gibt es aber die Datei programmdateien
im aktuellen Directory.
Jetzt kann man mit der Datei weiter arbeiten.
Eingabeumleitung
Das kleiner-als Zeichen bzw. die öffnende spitze Klammer (<) deutet an, dass der Inhalt einer Datei an ein Programm weitergegeben werden soll.
Beispielsweise soll der Inhalt der Datei foo
an das Programm cat
gegeben werden:
$ cat < foo
Dieser Befehl bewirkt, dass der Standardeingabekanal für das Kommando
cat
mit der Datei foo
verbunden wird.
Die Unix-Pipe
Mit dem Pipe-Symbol (|) kann man die Standardausgabe eines Programms
mit der Standardeingabe eines anderen Programms verbinden.
Auf diese Weise kann man mehrere Programme hintereinander laufen lassen,
die jeweils die Ausgabe ihres Vorgängers in der Kette verändern.
In den meisten Fällen werden Informationen hier verdichtet oder gefiltert.
Etwa so: (In den Programmblöcken steht I für Standardinput, O für Standardoutput und E für Standarderror. Im Beispiel wird mit der Errorausgabe nichts besonderes gemacht.)
$ programmliste > sort -u | wc -l
diese Datei (
programmliste
)
wird von
sort -u
sortiert, und Doppeleinträge werden entfernt, dann
mit dem pipe-Symbol (|) zum nächsten Programm
wc -l
weiter geleitet, was die Zeilen der Eingabe zählt. wc steht
für wordcount
Als Ergebnis bekommt man nur die Anzahl der verschiedenen Zeilen in der
ursprünglichen Datei programmliste
.
vorherige Seite Shellvariablen