Ein-/Ausgabe
Jedes Linux-Programm hat beim Start automatisch drei geöffnete Kommunikationskanäle:
| Kanal | Nummer | Name | Standard |
|---|---|---|---|
| stdin | 0 | Standard-Eingabe | Tastatur |
| stdout | 1 | Standard-Ausgabe | Terminal |
| stderr | 2 | Standard-Fehlerausgabe | Terminal |
Das Entscheidende: Ein Programm weiß nicht, woher seine Eingabe kommt oder wohin seine Ausgabe geht. Es liest von stdin und schreibt nach stdout – egal ob dahinter eine Tastatur, eine Datei oder ein anderes Programm steckt. Dieses Prinzip ist die Grundlage für Umleitungen und Pipes.
stdout und stderr in der Praxis
Abschnitt betitelt „stdout und stderr in der Praxis“Auf den ersten Blick landen beide Kanäle auf dem Terminal – sie sehen gleich aus:
ls /etc/hosts# /etc/hosts ← stdout
ls /gibt/es/nicht# ls: cannot access '/gibt/es/nicht': No such file or directory ← stderrDer Unterschied wird sichtbar, sobald man die Ausgabe umleitet: stdout und stderr lassen sich unabhängig voneinander lenken – Fehlermeldungen können so von der normalen Ausgabe getrennt werden.
stdin in der Praxis
Abschnitt betitelt „stdin in der Praxis“Viele Befehle lesen von stdin, wenn keine Datei als Argument angegeben wird:
cat# wartet auf Tastatureingabe, gibt jede Zeile direkt zurück# Beenden: Strg+DDas macht sie zu Filtern – sie können Daten aus einer Datei, von der Tastatur oder aus einer Pipe verarbeiten, ohne dass der Befehl selbst geändert werden muss.
Wie die Kanäle umgeleitet und verbunden werden, zeigen die nächsten beiden Artikel.