Programme kommunizieren über Ein- und Ausgabeströme. Die Standardausgabe, abgekürzt stdout, ist der Strom, über den ein Programm normalerweise seine regulären Ergebnisse ausgibt. In einem Terminal verbindet die Shell diesen Strom zunächst mit der Terminalanzeige.
Text-Fu · Lektion 1
stdout (Standardausgabe)
Lerne, wie die Standardausgabe zum Terminal fließt und wie Bash sie in Dateien umleitet.
In die Standardausgabe schreiben
Der Befehl echo schreibt seine Argumente nach stdout:
$ echo Hello World
Hello World
Stdout ist der Dateideskriptor 1. Diese Zahl wird nützlich, wenn du mehrere Ströme umleitest. Programme können außerdem über die Standardeingabe, stdin, und die Standardfehlerausgabe, stderr, verfügen; die nächsten Lektionen behandeln diese Ströme.
Wohin sendet echo Hello World ohne Umleitung normalerweise seine reguläre Ausgabe in einem interaktiven Terminal?
Eine Datei mit > ersetzen
Bash interpretiert > als Operator zur Ausgabeumleitung. Die Shell öffnet die Zieldatei und verbindet die Standardausgabe des Befehls mit ihr:
$ echo Hello World > peanuts.txt
Der Text erscheint nicht mehr im Terminal, weil stdout nun nach peanuts.txt fließt. Fehlt die Datei, wird sie von der Shell erstellt. Existiert sie bereits, leert die Shell sie vor der Ausgabe des Befehls; ihr vorheriger Inhalt geht verloren.
Prüfe das Ergebnis mit cat:
$ cat peanuts.txt
Hello World
notes.txt enthält bereits Text. Was bewirkt echo new > notes.txt?
Da die Shell das Ziel öffnet, bevor der Befehl läuft, solltest du den Pfad vor dem Drücken von Enter prüfen. Eine falsch geschriebene oder unbeabsichtigte vorhandene Datei kann selbst dann geleert werden, wenn der Befehl später fehlschlägt.
Mit >> an eine Datei anhängen
Verwende >>, wenn eine neue Standardausgabe hinter den vorhandenen Dateiinhalt gesetzt werden soll:
$ echo Another line >> peanuts.txt
$ cat peanuts.txt
Hello World
Another line
Wie > erstellt auch >> ein fehlendes Ziel. Der Unterschied besteht darin, wie eine vorhandene Datei geöffnet wird: >> hängt an, statt sie zu leeren.
Welcher Befehl fügt Finished am Ende von status.log hinzu, ohne vorhandenen Inhalt zu löschen?
Die Umleitung ist Aufgabe der Shell
Die Shell erkennt > und >>, entfernt die Operatoren aus den an das Programm übergebenen Argumenten, öffnet die Datei und richtet die Stromverbindung ein. Der Befehl selbst schreibt wie gewohnt in seine Standardausgabe.
Deshalb funktioniert dieselbe Umleitungssyntax mit vielen Befehlen:
$ pwd > current-directory.txt
$ ls -la >> directory-list.txt
Wer interpretiert normalerweise > in pwd > current-directory.txt?
Mit dieser Übung kannst du die Steuerung von stdout, stderr und stdin praktisch trainieren:
- Eingabe und Ausgabe in Linux umleiten – Steuere Standardausgabe, Standardfehler und Standardeingabe mit Operatoren wie
>,>>und2>sowie dem Befehltee.
Lektion abgeschlossen
Sie haben stdout (Standardausgabe) abgeschlossen
Du kannst nun die Standardausgabe eines Befehls umleiten und Ersetzen von Anhängen unterscheiden.
Erkenne stdout als Strom für reguläre Befehlsergebnisse.
Ersetze einen Dateiinhalt mit
>.Bewahre vorhandenen Inhalt und hänge mit
>>an.Prüfe ein Ziel, bevor die Shell es öffnet.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen