Standard-Streams in Bash
- Standard-Streams
- Standardeingabe
- Standardeingabe über die Tastatur
- Standardeingabe mit Dateien
- Standardeingabe von der Umleitung
- Standardeingang von Rohrleitungen
- Standardausgabe
- Standardausgabe zur Anzeige
- Standardausgabe in Datei umgeleitet
- Standardausgabe durch eine Pipe
- Standart Fehler
- Standardfehler in Datei umgeleitet
- Alle Ausgaben in Datei umleiten
In diesem Tutorial werden die Standardstreams und das Umleiten von Ausgabe und Eingabe in und aus einer Datei erläutert.
Standard-Streams
Unter Linux gibt es drei Standard-Streams; Standardeingabe (stdin
), Standardausgabe (stdout
) und Standardfehler (stderr
). Jeder Stream wird durch einen Dateideskriptor dargestellt. Die Standardeingabe wird durch eine 0
dargestellt, die Standardausgabe durch eine 1
und der Standardfehler durch eine 2
.
Standardeingabe
Die Standardeingabe sind Daten, die an ein Programm übergeben werden. Dies geschieht normalerweise durch Tippen auf der Tastatur. Es können auch Daten sein, die an das Programm weitergeleitet oder umgeleitet wurden. Die Standardeingabe verwendet EOF (end-of-file), um das Ende der Eingabedaten anzuzeigen.
Standardeingabe über die Tastatur
Wir werden den Befehl cat
verwenden, um die Standardeingabe mit Eingabedaten aus dem Schlüsselwort zu demonstrieren. Der Befehl cat
nimmt Eingaben entgegen und gibt sie auf dem Bildschirm aus.
Öffnen Sie das Linux-Terminal und geben Sie cat
ein und drücken Sie die Eingabetaste. Sie können jetzt eine beliebige Eingabe eingeben, und sobald Sie die Eingabetaste drücken, zeigt der Befehl cat
die Eingabe auf dem Terminal an. Der Befehl cat
läuft in einer Schleife; um ihn davon abzuhalten, weitere Eingaben zu erhalten, drücken Sie CTRL+D. Es dient als Signal zur Anzeige des EOF.
Standardeingabe mit Dateien
Dateien können auch Eingaben für ein Programm bereitstellen. Wir werden den Befehl cat
verwenden, um zu demonstrieren, dass eine Datei als Standardeingabe verwendet werden kann.
Der Befehl cat
nimmt den Dateinamen als Argument und zeigt den Inhalt der Datei auf dem Terminal an. In der Abbildung unten nimmt der Befehl cat
die Datei output.txt
und zeigt ihren Inhalt auf dem Terminal an.
Standardeingabe von der Umleitung
Die Standardeingabeumleitung verwendet den Standardeingabeumleitungsoperator <
. Die Eingabeumleitung verwendet die Notation command < filename
. Das bedeutet, dass die Eingabe für den Befehl aus dem Inhalt innerhalb des angegebenen Dateinamens stammt.
In der Abbildung unten wird der Inhalt der output.txt
an den cat
-Befehl übergeben, der ihn auf dem Terminal ausgibt.
Standardeingang von Rohrleitungen
Ein Pipe-Operator wird verwendet, um die Ausgabe eines Befehls als Eingabe an einen anderen Befehl zu übergeben. Der Pipe-Operator ist ein senkrechter Strich |
.
Unten ruft der Befehl head
die ersten 10 Zeilen der Datei output.txt
ab und leitet sie als Standardeingabe an den Befehl cat
weiter. Der Befehl cat
zeigt es als Ausgabe an das Terminal an.
Standardausgabe
Die Standardausgabe zeigt Daten an, die von einem Programm generiert werden. Diese Daten werden an das Terminal gedruckt, wenn sie nicht umgeleitet oder geleitet werden.
Standardausgabe zur Anzeige
Fast jeder Linux-Befehl kann verwendet werden, um die Standardausgabe zu demonstrieren. Wir werden den Befehl head
verwenden, um dies zu demonstrieren. Der head
-Befehl nimmt einen Dateinamen als Argument und gibt nur die ersten 10 Zeilen der Datei aus.
Standardausgabe in Datei umgeleitet
Die Standardausgabeumleitung verwendet den Standardausgabeumleitungsoperator >
. Die Ausgabeumleitung verwendet die Notation Befehl > Dateiname
. Dies bedeutet, dass die Ausgabe des Befehls in den angegebenen Dateinamen geschrieben werden soll.
Die Notation Befehl >> Dateiname
bedeutet, dass die Ausgabe des Befehls an die Datei angehängt wird, anstatt die vorhandene Datei zu überschreiben. Das >>
wird als Append-Redirection-Operator bezeichnet.
Wir verwenden den Ausgabeumleitungsoperator, um die Ausgabe des Befehls ls
in die Datei output.txt
umzuleiten. Mit dem Befehl cat
wird der Inhalt der als Argument übergebenen Datei angezeigt.
Standardausgabe durch eine Pipe
Ein Pipe-Operator wird verwendet, um die Ausgabe eines Befehls an einen anderen Befehl zu übergeben. Der Pipe-Operator ist ein senkrechter Strich |
.
Hier wird die Ausgabe des ls
-Befehls an den head
-Befehl geleitet. Der Befehl head
zeigt (Standardausgabe) nur die ersten 5 Zeilen zum Terminal von der Eingabe, die zu ihm geleitet wurde.
Standart Fehler
Der Standardfehler ähnelt der Standardausgabe, außer dass er für Fehlermeldungen von einem Programm verwendet wird.
Wir werden den Befehl ls
verwenden, um den Standardfehler zu demonstrieren. Der Befehl ls
wird verwendet, um den Inhalt eines Ordners anzuzeigen. Wir übergeben einen Ordnernamen, der nicht existiert, als Argument an den Befehl ls
, und er zeigt eine Fehlermeldung mit dem Standardfehler an.
Standardfehler in Datei umgeleitet
Wir verwenden den Standardausgabeumleitungsoperator, um den Standardfehler in eine Datei umzuleiten. Wir müssen jedoch angeben, dass wir den Standardfehler umleiten möchten, indem wir dem Ausgabeumleitungsoperator 2
hinzufügen, 2>
als Dateideskriptor.
Lassen Sie uns nun den Standardfehler des ls
-Befehls in eine Datei umleiten. Die 2>
gibt an, dass nur vom Befehl ls
generierte Fehler in die Datei errors_file.txt
umgeleitet werden sollen.
Lassen Sie uns mit dem Befehl cat
den Inhalt der errors_file.txt
anzeigen. Unten sehen wir, dass die Datei die Fehlermeldung des Befehls ls
enthält.
Alle Ausgaben in Datei umleiten
Um sowohl die Standardausgabe als auch den Standardfehler in dieselbe Datei umzuleiten, verwenden Sie die folgende Notation:
Befehl > Datei 2>&1
. Es leitet beide Streams des Befehls an die angegebene Datei um.
In der Abbildung unten werden sowohl die Standardausgabe als auch der Standardfehler des Befehls ls
in dieselbe Datei output.txt
umgeleitet.