Streams, Pipes, Redirects

Ein-/Ausgabekanäle

Kanal Art Begriff Beschreibung
0 Eingabe stdin Standard Eingabe
1 Ausgabe stdout Standard Ausgabe
2 Fehlerkanal stderr Standard Error-Ausgabe
                                                             ^
                               ___________________   _______| \
                      |\      |                   | | stdout   >
            __________| \     |                   | |_______  /
           |             \    |                   |         |/
 Tastatur  | stdin        >   |     Programm      |         ^
           |__________   /    |                   |  _______| \       
                      | /     |                   | | stderr   >
                      |/      |___________________| |_______  /
                                                            |/


Umleitungen

Die bisher angegebenen 3 Kanäle können umgeleitet werden ohne das das Programm davon etwas mitbekommt, da die Shell umleitet und nicht das Program.
Hier kann jedes Konsolen-Programm umgeleitet werden.

                                                             ^
                               ___________________   _______| \
                      |\      |                   | | stdout   >  out.txt
            __________| \     |                   | |_______  /
           |             \    |                   |         |/
 in.txt    | stdin        >   |     Programm      |         ^
           |__________   /    |                   |  _______| \       
                      | /     |                   | | stderr   >  err.txt
                      |/      |___________________| |_______  /
                                                            |/


Umleitung der Ausgabe

Datei überschreiben / anlegen

BEFEHL > datei.txt Ausgabe wird nach datei.txt geschrieben. Existiert diese nicht, wird sie angelegt, ansonsten wird sie überschrieben(!)
BEFEHL 2> datei.txt Wie darüber, nur wird hier die Fehlermeldungen (2>) umgeleitet


an Datei anhängen / anlegen

Befehl » datei.txt Ausgabe wird an datei.txt angehängt. Existiert diese nicht, wird sie angelegt. BEFEHL 2» datei.txt Wie darüber, nur wird hier die Fehlermeldungen (2») umgeleitet

Beispiele

stdout in out.txt
stderr in err.txt

BEFEHL > out.txt 2> err.txt


stdout UND stderr in outerr.txt umleiten. Datei ersetzen, wenn bereits vorhanden. Ist die Datei nicht vorhanden, so wird diese erstellt.

cmd > outerr.txt 2>&1


stdout UND stderr in outerr.txt umleiten. An Datei anhängen, wenn bereits vorhanden. Ist die Datei nicht vorhanden, so wird diese erstellt.

cmd >> outerr.txt 2>&1


Beispiel

echo -n "Beginn: " > Proto.txt date >> Proto.txt
ls >> Proto.txt
echo -n "Ende: " >> Proto.txt date >> Proto.txt


Texteditor für Freaks

cat > text.txt


Umleitung der Eingabe

Eingabe nicht von einer Tastatur, sondern einer Datei.

cmd < file.txt


Beispiel

mail –s Test joe@spam.com < viagra.txt


Pipe durch Umleitung ersetzen

Kurz
BEFEHL1 | BEFEHL2

Lang
BEFEHL1 > file.txt
BEFEHL2 < file.txt


Beispiel

Kurzes Beispiel

ls –s | sort -n


Langes Beispiel

cat mbox | tr A-Z a-z | tr -cs a-z '\n' | sort | uniq –c | sort -n


Ausleitung aus einer Pipe

Das Kommando tee schreibt stdin nach stdout und in die angegebene Datei:

BEFEHL1 | BEFEHL2 | tee out.txt | BEFEHL3


xargs

xargs übergibt die Eingabe als Parameter an das Kommando, das hinter xargs angegeben wird

Beispiel

ls /etc/*.conf | xargs cat -b


xargs unter der Lupe

ls /etc/*.conf | xargs cat -b
-> /etc/adduser.conf
-> /etc/blkid.conf
-> /etc/ca-certificates.conf 
-> /etc/debconf.conf
ls /etc/*.conf | xargs cat -b
-> cat -b /etc/adduser.conf 
          /etc/blkid.conf
          /etc/ca-certificates.conf
          /etc/debconf.conf


Beispiele

find . -maxdepth 1 -type d -print | xargs echo Directories:
cat url-list.txt | xargs wget
find . -name "*.java" | xargs grep "Stock"

linux/streams_pipes_redirects.txt · Zuletzt geändert: 2015/07/06 22:32 (Externe Bearbeitung)