Datenströme & Text
stdin, stdout, stderr und Pipes
Unix-Programme werden besonders mächtig, wenn sie Daten über standardisierte Ein- und Ausgabeströme austauschen.
Nur wenn Sie diesen Button verwenden, wird Ihr Lernfortschritt lokal in diesem Browser gespeichert. Es erfolgt keine Übertragung an den Server.
Drei Standardströme
Ein Prozess startet typischerweise mit Standard Input (Dateideskriptor 0), Standard Output (1) und Standard Error (2). Die Shell kann diese Ströme verbinden oder in Dateien umleiten.
command >output.txt
command 2>errors.txt
command >all.txt 2>&1Pipes
Mit | wird die Standardausgabe eines Kommandos zur Standardeingabe des nächsten. So entstehen Verarbeitungsketten aus kleinen Werkzeugen.
journalctl -p err | grep -i network | tail -n 20Nicht unnötig cat verwenden
Viele Programme können Dateien direkt lesen. Statt cat file | grep pattern ist grep pattern file meist einfacher. Eine Pipe ist sinnvoll, wenn tatsächlich die Ausgabe eines vorherigen Verarbeitungsschritts weitergereicht wird.
Übung
Jetzt selbst ausprobieren
Leiten Sie stdout und stderr eines Kommandos in zwei verschiedene Dateien.
Lösung / Hinweis anzeigen
Beispiel: `(printf "ok\n"; ls /nicht-vorhanden) >out.txt 2>err.txt`.
Wissenscheck
Welcher Dateideskriptor steht für stderr?
0 ist stdin, 1 stdout, 2 stderr.
Mit Trainer vertiefen
Dieses Thema als Schulung?
Auf linux-kurse.eu finden Sie Linux-, Administrations- und Bash-Schulungen von Bodenseo.
Linux-Schulungen ansehen