next up previous contents index
Next: Eingabehilfen von der Up: Die ersten Schritte Previous: Verzeichnisse und Dateien

Datenströme

 

Das Verhalten des cat-Kommandos zeigt eine Eigenart der Datenverarbeitung unter Linux auf:

Dateien können als eingefrorene ,,Datenströme`` betrachtet werden. Jeder Druck auf die Tastatur erzeugt ein Zeichen im Datenstrom. Normalerweise wird jedes eingegebene Zeichen auf dem Bildschirm dargestellt, der so ein Echo dieses Eingabedatenstroms ist.

Das cat-Kommando öffnet im obigen Beispiel die Datei Adressen und leitet die darin enthaltenen Daten als kontinuierlichen Strom auf den Bildschirm.

Passend zum Bild der Datenströme können Sie sich verschiedene Kanäle vorstellen, in denen diese Ströme wie Wasser fließen. Linux bietet sehr flexible Möglichkeiten, diese Ströme zu steuern. Damit nicht jeder Strom ausdrücklich gesteuert werden muß, gibt es einige Standardkanäle: die Standardeingabe, die Standardausgabe und die Standardfehlerausgabe.    

Diese Datenkanäle sind immer offen. Normalerweise ist der Bildschirm die Standardausgabe und gleichzeitig auch die Standardfehlerausgabe (deren Sinn es ist, die normale Ausgabe eines Programms von den Fehlermeldungen besser unterscheiden zu können). Die Standardeingabe ist, wie zu erwarten war, normalerweise die Tastatur. Die drei Standardkanäle sind numeriert: die Standardeingabe hat die Nummer Null, die Standardausgabe und die Standardfehlerausgabe haben die Nummern Eins und Zwei. 

Das cat-Kommando schreibt normalerweise auf die Standardausgabe. Durch die Operatoren > und < im Kommandozeileninterpreter (der Shell) können die Datenströme aber auch umgelenkt werden. Zum Beispiel

$ cat Adressen > Telefonliste
$ _

leitet den Datenstrom, den cat aus der Datei Adressen erzeugt, in die Datei Telefonliste um. Die Telefonliste speichert den Datenstrom wieder; es entsteht also eine Kopie der Datei Adressen. Das gleiche Ergebnis hätten Sie natürlich auch mit dem cp-Kommando erzielen können.

Umgekehrt kann auch der Eingabekanal umgelenkt werden:

$ sort < Adressen
FSF       675 Mass Ave           Cambridge,   MA 02139 USA
LunetIX   Donaustr. 16           12043 Berlin  030/6235787
MIT       545 Technology Square  Cambridge,   MA 02139 USA
O'Reilly  632 Petaluma Avenue    Sebastopol,  CA 95472 USA
XeroxParc 3333 Coyote Hill Raod  Palo Alto,   CA 94304 USA
$ _

gibt beispielsweise die Adressen alphabetisch sortiert auf dem Bildschirm aus.

Verknüpfung mehrerer Kommandos: Pipelines

 

Um in der Bilderwelt von Datenströmen zu bleiben, bietet Linux zu den offenen Kanälen noch Röhren, sogenannte Pipelines. Damit wird der Ausgabekanal eines Kommandos direkt in den Eingabekanal eines anderen Kommandos geleitet.

Der Operator für diese Pipeline ist der senkrechte Strich |.

Auf der deutschen Tastatur wird er durch gemeinsames Drücken der rechten ALT mit der < Taste (links unten neben der Leertaste und der linken ALT Taste) erzeugt.

$ sort Adressen | uniq | less
[Ausgabe von less]
$ _

ist so eine Pipeline aus gleich drei Kommandos. Das sort Kommando liest die Datei Adressen (die Eingabeumleitung aus dem früheren Beispiel ist nicht notwendig) und sortiert deren Inhalt zeilenweise. Die sortierten Zeilen werden von der Standardausgabe in eine Pipeline gespeist und so dem uniq-Kommando zugeführt, das die Zeilen vergleicht und alle Zeilen entfernt, die doppelt vorkommen. Die Ausgabe von uniq wird wiederum in die zweite Pipeline gespeist und schließlich dem less-Programm zugeführt, das die sortierte und von den Doppeln befreite Adreßdatei bildschirmweise anzeigt.

Mit diesen Röhren lassen sich mit den vielseitigen Kommandos des Linux-Basissystems auf einfache Weise auch komplizierte Aufgaben schnell und zweckmäßig lösen.



next up previous contents index
Next: Eingabehilfen von der Up: Die ersten Schritte Previous: Verzeichnisse und Dateien



Linux Anwenderhandbuch -- Copyright 1993, 1994, 1995 S. Hetze, D. Hohndel, O. Kirch, M. Müller