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.
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.