Unix pipes



fortune > blabla.txt

würde eine Datei erstellen die blabla.txt heisst und in das die Ausgabe von fortune reingeschrieben würde.

Das file kannst du dann z.B. mit dem Befehl cat ausgeben:

cat blabla.txt

Der Befehl

echo Hallo Welt

gibt den text "Hallo Welt" auf dem Bildschirm aus.

Damit erzeugt

echo Hallo Welt > blabla.txt

ein File blabla.txt mit diesem Inhalt. Falls das File schon exisitert wird es überschrieben. Wenn man nicht überschreiben sondern anhängen will verwendet man >> :

date >> blabla.txt

würde z.B. die Ausgabe des Befehls date (das aktülle Datum) an die datei blabla.txt anhängen.

Das ganze funktioniert auch in umgekerte Richtung. Manche Programme brauchen Eingaben und mit dem Pfeil in die andere Richtung kann man aus einem File lesen und die Daten an ein Programm senden. z.B.:

cat < blabla.txt

tut zwar im Grunde das Selbe wie "cat blabla.txt" aber in obigen Beispiel gibt cat nur aus was es mittels < "hineingestopft" bekommt.

Eine andere Form der Umleitung passiert mit dem | (pipe) Symbol. Das leitet die Ausgabe eines Befehls zur Eingabe eines anderen um.

cat blabla.txt | less

Der Unterschied hier ist, dass nicht eine Datei mit dem namen "less" erzeugt wird sondern die Ausgabe in ein Programm names "less" geschrieben wird.

less kennst du ja schon aber das |-Symbol geht mit vielen Befehlen. Davon werden wir aber andermal noch mehr kennen lernen.

Was zu beachten ist:

Den Ausgabekanal über den die Ausgaben eines Befehles ablaufen nennt man "standard out" oder kurz STDOUT. Den Kanal über den die Eingaben an ein Kommando laufen heisst analog STDIN.

Die Umleitung betrifft nur die "normale" Ausgabe. Fehlermeldungen werden über einen eigenen Kanal ausgegeben. Dieser wird "standard error" (STDERR) genannt. Er ist von der normalen Umleitung nicht betroffen. kann aber mit 2> umgeleitet werden. z.b:

ls --diesen-switch-gibt-es nicht 2> fehlermeldung.txt

(im obigen Beispiel wird das ls Kommando mit einem Switch aufgerufen den es nicht kennt und das ls Kommando würde sich darüber beschweren. Die Fehlermeldung wird hier mit dem 2> Symbol in die Datei fehlermeldung.txt geschrieben.)

REFERENCES:

http://www.strath.ac.uk/IT/Docs/IntroToUnix/node39.html

http://www.ee.surrey.ac.uk/Teaching/Unix/unix3.html

http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html

man bash