Umleitung
Mit Umleitungsoperatoren werden die Standard-Kanäle eines Programms mit Dateien verbunden – statt mit Terminal oder Tastatur.
stdout umleiten: > und >>
Abschnitt betitelt „stdout umleiten: > und >>“ls /etc > ausgabe.txt # stdout in Datei schreiben (überschreibt)ls /etc >> ausgabe.txt # stdout anhängen (append)> legt die Datei neu an oder überschreibt sie. >> hängt an eine bestehende Datei an – ist sie nicht vorhanden, wird sie angelegt.
stdin umleiten: <
Abschnitt betitelt „stdin umleiten: <“sort < unsortiert.txt # sort liest aus Datei statt von Tastaturwc -l < protokoll.txt # wc zählt Zeilen in der DateiIn der Praxis selten nötig, da die meisten Befehle Dateien direkt als Argument akzeptieren – sort unsortiert.txt ist gleichwertig. Nützlich wird < in Skripten und bei Befehlen, die keine Dateiargumente kennen.
stderr umleiten: 2>
Abschnitt betitelt „stderr umleiten: 2>“find / -name "*.conf" 2> fehler.txt # Fehlermeldungen in Dateifind / -name "*.conf" 2> /dev/null # Fehlermeldungen verwerfen/dev/null ist ein spezielles Gerät, das alles geschriebene stillschweigend verwirft – das “Schwarze Loch” des Systems.
stdout und stderr kombiniert umleiten
Abschnitt betitelt „stdout und stderr kombiniert umleiten“befehl > alles.txt 2>&1 # stderr auf stdout umlenken, beide in Dateibefehl &> alles.txt # Kurzform (bash): beide Kanäle in Dateibefehl &>> alles.txt # beide Kanäle anhängen2>&1 bedeutet: “Kanal 2 (stderr) auf dasselbe Ziel wie Kanal 1 (stdout) lenken.” Die Reihenfolge ist wichtig – 2>&1 muss nach der stdout-Umleitung stehen:
befehl > datei.txt 2>&1 # korrekt: erst stdout auf datei.txt, dann stderr dorthinbefehl 2>&1 > datei.txt # falsch: stderr geht auf Terminal, stdout in Dateistdout verwerfen
Abschnitt betitelt „stdout verwerfen“befehl > /dev/null # Ausgabe unterdrücken, nur Fehler sichtbarbefehl > /dev/null 2>&1 # komplett lautlos ausführenTypischer Einsatz in Skripten, wenn ein Befehl nur wegen seines Exit-Codes ausgeführt wird und die Ausgabe nicht interessiert.
Übersicht
Abschnitt betitelt „Übersicht“| Operator | Bedeutung |
|---|---|
> | stdout in Datei (überschreiben) |
>> | stdout in Datei (anhängen) |
< | stdin aus Datei |
2> | stderr in Datei |
2>/dev/null | stderr verwerfen |
&> | stdout + stderr in Datei |
2>&1 | stderr auf stdout umlenken |