Eine sog. "Pipe" (übersetzt: Rohr, Röhre) wird verwendet, um die StandardAusgabe eine Programms mit der StandardEingabe eines anderen Programms zu verbinden.
Beispiel
cat liste.txt | sort | uniq
leitet Ausgabe von cat in die Eingabe von sort, die Ausgabe von sort in die Eingabe von uniq.
Um die Ausgabe zu vervielfachen, d.h. einmal zusätzlich in eine Datei zu schreiben, gibt es das Programm tee.
cat liste.txt | sort | uniq | tee liste.srt | wc -l
Hier wird die Ausgabe von uniq einmal in die Datei liste.srt geschrieben und gleichzeitig nach wc geleitet, wo die Zeilen gezählt werden.
Will man nicht nur die Standardausgabe des Programms sondern auch die Fehlerausgabe in einer Pipe verarbeiten hilft folgendes:
strace xpdf 2>&1| grep "/etc"
Hier startet man ein Programm mit strace und will sehen ob es eine Konfigurations Datei in /etc geben könnte die das Programm einliest.
Nur die Error Ausgabe mit
(strace echo "hello hello" >/dev/null) 2>&1|less
Die Sachen mit der Pipe geht das einfacher ist das richtig?
Bei Umleitungen kommt es auf die Reihenfolge an. So leitet das Kommando programm >/dev/null 2>&1 alles nach /dev/null während programm 2>&1 >/dev/null nur stdout nach /dev/null umleitet und stderr nach stdout. -- HelmutGrohne 2005-06-05 09:26:40