Standard-Streams in Bash

Fumbani Banda 30 Januar 2023
  1. Standard-Streams
  2. Standardeingabe
  3. Standardeingabe über die Tastatur
  4. Standardeingabe mit Dateien
  5. Standardeingabe von der Umleitung
  6. Standardeingang von Rohrleitungen
  7. Standardausgabe
  8. Standardausgabe zur Anzeige
  9. Standardausgabe in Datei umgeleitet
  10. Standardausgabe durch eine Pipe
  11. Standart Fehler
  12. Standardfehler in Datei umgeleitet
  13. Alle Ausgaben in Datei umleiten
Standard-Streams in Bash

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.

stdin-cat

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.

stdin2-cat

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.

stdin3-cat

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.

stdin4-cat

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.

stdout-Kopf

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.

stdout-Umleitung

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.

stdout-Rohr

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.

stderror-Ordner

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.

stderr-Datei

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.

stderr-cat

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.

Ausgabe-beide

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub