Leiten Sie stdout und stderr auf Datei um

Redirect Stdout Stderr File



Wenn Sie eine Befehlsausgabe in eine Datei umleiten, werden Sie feststellen, dass die Fehlermeldungen im Terminalfenster ausgegeben werden. Jeder Befehl, der in einer beliebigen Linux-Shell ausgeführt wird, wie bash, verwendet drei reguläre I/O-Streams. Ein numerischer Dateideskriptor wird verwendet, um jeden Stream darzustellen.

  • Der Standard-Eingabestream (stdin): 0
  • Der Standardausgabestream (stdout): 1
  • Der Standardfehlerstrom (stderr): 2

In diesem Beitrag werden wir die Informationen erfassen, die unter Umleiten von stdout und stderr in eine Datei fallen.







Standardausgabe (stdout):

Jedes auf Linux basierende Betriebssystem hat eine Überzeugung von einem Standardplatz für den ausgeführten Befehl. Jeder bezeichnet diesen Begriff als stdout oder Standardausgabe, um es einfacher klingen zu lassen. Ihre Bash- oder Zsh-Shell sucht ständig nach dem Standardausgabespeicherort. Wenn die Shell eine neue Ausgabe erkennt, zeigt sie diese auf dem Terminalbildschirm an, damit Sie sie sehen können. Andernfalls wird die Ausgabe an ihren Standardspeicherort gesendet.



Standardfehler (stderr):

Standard error oder stderr ähnelt der Standardeingabe und -ausgabe, wird jedoch zum Speichern von Fehlermeldungen verwendet. Der Standardfehler kann mit einem Terminal an die Befehlszeile oder eine Datei umgeleitet werden. Wenn Sie Meldungen in einer separaten Protokolldatei aufzeichnen oder speichern oder die Fehlermeldungen ausblenden möchten, hilft Ihnen die Umleitung von stderr. Kommen wir nun zur praktischen Seite der stdout- und stderr-Umleitung.



Umleiten von stdout und stderr in eine Datei:

Eine Umleitung ist eine Methode, um eine Programmausgabe zu erfassen und als Eingabe an einen anderen Befehl oder eine andere Datei zu senden. Die E/A-Streams können umgeleitet werden, indem der Operator n> verwendet wird, wobei n die Dateideskriptornummer ist. Für die Umleitung von stdout verwenden wir 1> und für stderr wird 2> als Operator hinzugefügt.





Wir haben eine Datei namens sample.txt erstellt, um die umgeleitete Ausgabe in unserem aktuellen Verzeichnis zu speichern.



Der (Befehl > Datei) gilt als klassischer Umleitungsoperator, der nur die Standardausgabe mit dem im Terminal angezeigten Standardfehler umleitet. Wir werden auch verschiedene Optionen zum Umleiten von stderr demonstrieren.

Umleiten von stderr und stdout in separate Dateien:

Unten ist die Befehlssyntax zum Umleiten von stdout und stderr in separate Dateien.

Befehl >aus2>Error

Der unten angegebene Befehl leitet die Ausgabe in die out-Datei und Fehlermeldungen in die Fehlerdatei um.

$KatzeBeispiel.txt>aus2>Error

Umleiten von stderr nach stdout:

Es ist gängige Praxis, den stderr mit der Standardausgabe eines Programms umzuleiten, um alles in einer einzigen Datei zu speichern. Hier ist die Befehlssyntax zum Umleiten von stderr nach stdout:

Befehl >aus2> &1$ls >Beispieldatei.txt2> &1

$KatzeBeispieldatei.txt

> out-Redirects leiten die stdout-Datei zu samplefile.txt um, und 2>&1 leitet die stderr-Datei an den aktuellen Speicherort von stdout um.

Wenn stderr zuerst zu stdout umgeleitet wird, verwenden Sie den unten angegebenen Befehl, um stdout in eine Datei umzuleiten.

Befehl 2> &1 > Datei$ls -zum 2> &1 >Beispieldatei.txt

$KatzeBeispieldatei.txt

&> wird auch für dieselbe Funktionalität verwendet, die 2>&1 ausführt.

Befehl &> Datei$ls &>Beispieldatei.txt

$KatzeBeispieldatei.txt

Umleiten von stdout und stderr in eine einzelne Datei:

Alle Shells unterstützen diese Formularumleitung nicht, aber bash und Zsh unterstützen sie. Stdout und stderr können mithilfe der folgenden Syntax umgeleitet werden.

Befehl &>aus$KatzeBeispiel.txt&>aus

Im nächsten Abschnitt des Artikels werden wir uns das separate Beispiel für die stdout- und stderr-Umleitung ansehen.

Umleiten von stdout in eine Datei:

Die Standardausgabe wird durch die 1 in der Liste der Dateideskriptornummern dargestellt. Für den Umleitungsbefehl ohne Dateideskriptornummer setzt das Terminal seinen Wert auf 1. Die Syntax zum Umleiten des stdout in eine Datei lautet wie folgt:

Befehl > Datei

Wir verwenden die sample.file zum Speichern der Standardausgabe des Befehls ls -al

$ls -zum >Beispiel.txt

$KatzeBeispiel.txt

Befehl 1> Datei$ls 1>Beispiel.txt

$KatzeBeispiel.txt

Umleiten von stderr in eine Datei:

Verwenden Sie den Operator 2>, um den stderr in eine Datei umzuleiten.

Befehl 2> Datei $ls -zum 2>Beispiel.txt

Wir können die Ausführung für stderr und stdout in einem einzigen Umleitungsbefehl kombinieren.

Befehl 2>error.txt1>Ausgabe.txt

Im unten angegebenen Beispiel werden die Fehlermeldungen in error.txt gespeichert, wobei output.txt die Standardausgabe des ls-Befehls hat.

$ls 2>error.txt1>Ausgabe.txt

$KatzeAusgabe.txt

Abschluss:

Das Konzept der Umleitung und Dateideskriptoren für I/O-Streams ist bei der Arbeit in einem Linux-Terminal sehr wertvoll. In diesem Beitrag haben wir über die regulären I/O-Streams gesprochen, einschließlich stdout und stderr. Der erste Abschnitt dieses Beitrags enthält detaillierte Informationen über die Umleitung, E/A-Streams und den numerischen Dateideskriptor. Als nächstes haben Sie das praktische Beispiel für verschiedene Formen der stdout- und stderr-Umleitung gesehen.