STDOUT, STDERR und STDIN

STDOUT, STDERR und STDIN werden benutzt, um Eingaben und Ausgaben in der Shell umzuleiten. Die Begriffe stehen für "standart output" (STDOUT), "standart error" (STDERR) und "standart input" (STDIN). Per default werden Ausgaben eines shell-Befehls über STDOUT und STDERR auf der Befehlszeile direkt sichtbar ausgegeben.

STDIN kann benutzt werden, um Nutzereingaben aufzunehmen und zu verarbeiten.

In einem shell-skript oder einem Einzeiler werden die obigen, langen Begriffe nicht direkt benutzt, sondern Zahlen-Variablen. Die 1 für STDOUT und die 2 für Fehlermeldungen, also STDERR. Ein Beispiel, was sehr häufig genutzt wird ist der Befehl "2>/dev/null". Damit werden alle Fehlermeldungen (z.B. keine Leserechte in bestimmen Verzeichnissen) in den Müll (a.k.a. /dev/null) geschickt und erscheinen somit nicht auf dem Bildschirm! Sehr nützlich, bitte merken.

Wird keine Nummer angegeben,so geht die shell davon aus, dass man STDOUT (also 1) meint: 
ls -la > inhalt.txt
 Ist das selbe wie:
ls -la 1> inhalt.txt
Möchte man STDOUT in einen file und STDERR in einen anderen file lenken, macht man dies wie folgt:
ls -la 1>inhalt.txt 2>fehlermeldungen.txt
STDOUT und STDERR in einen file zusammen lenken? Kein Problem:
ls -la >inhalt.txt 2>&1
Möchte man allerdings trotz Umleitung in eine Datei eine Ausgabe (zur Kontrolle zB) auf dem Bildschirm sehen, gibt es auch dafür eine Lösung:
ls -la | tee inhalt.txt

Mehr Infos bei skorks.com.

Keine Kommentare:

Kommentar veröffentlichen