So leiten Sie stderr in Bash an stdout um

How Redirect Stderr Stdout Bash



Befehle in Linux nehmen einige Eingaben vom Benutzer entgegen, die eine Datei oder ein beliebiges Attribut sein können, und geben bei der Ausführung eine Ausgabe aus, die als Standardausgabe bezeichnet wird. Die Standardausgabe kann eine Erfolgsausgabe oder eine Fehlerausgabe sein; beide werden auf Ihrem Terminalbildschirm angezeigt. In einigen Fällen möchten Sie jedoch Standardausgaben in einer Datei zum Testen oder Debuggen des Codes speichern. Unter Linux können diese Ausgaben in eine Datei umgeleitet werden, und der Vorgang der Erfassung wird Umleitung genannt.







Jeder Prozess unter Linux produziert drei Datenströme, stdin, stdout und stderr:



  • stdin : Nimmt Eingaben vom Benutzer über die Tastatur entgegen
  • stdout : Zeigt die Ausgabe auf dem Bildschirm an
  • stderr : Zeigt Fehlerinformationen auf dem Bildschirm an

Jeder Datenstrom hat eine numerische ID:



Numerische ID Name
0 stdin
1 stdout
2 stderr

Lassen Sie uns die Umleitung etwas genauer erklären:





So leiten Sie die Standardausgabe und den Standardfehler in Bash um:

Um die Standardausgabe des Befehls umzuleiten, verwenden wir 1 mit einem Umleitungsoperator, der größer als das >-Zeichen ist:

$ls 1>stdout.txt

Der obige Befehl erstellt eine Datei und platziert die Standardausgabe des ls-Befehls in der Datei stdout.txt.



Um die Datei stdout.txt zu lesen, verwenden Sie:

$Katzestdout.txt

Wir können Standardfehler auch in eine Datei umleiten, indem wir den Befehl verwenden:

$Katzemeinedatei.txt2>stderr.txt

Um die Datei stderr.txt anzuzeigen, verwenden Sie:

$Katzestderr.txt

Stellen Sie sicher, dass 2 größer als das >-Zeichen ist. Da das Verzeichnis keine myfile.txt-Datei enthält, gibt der Befehl cat einen Fehler aus, der in die Datei stderr.txt angehängt wird.

Diese Standardausgaben können auch mit einem einzigen Befehl umgeleitet werden, verwenden Sie:

$ls 1>stdout.txt2>stderr.txt

Die Ausgabe des ls-Befehls wird in die stdout.txt Datei, aber die stderr.txt bleibt leer, da kein Fehler auftritt.

Machen wir nun für stderr.txt:

$Katzemeinedatei.txt1>stdout.txt2>stderr.txt

Verwenden Sie den unten genannten Befehl, um stderr.txt zu lesen.

$Katzestderr.txt

Und natürlich ist stdout.txt leer.

Abschluss :

Der Linux-Befehl gibt bei der Ausführung eine Standardausgabe aus, die eine Erfolgsausgabe oder eine Fehlerausgabe sein kann. Im Allgemeinen können diese Ausgaben nicht mit Umleitungsoperatoren umgeleitet werden; wir müssen bestimmte numerische IDs mit dem >-Zeichen verwenden. In diesem Handbuch haben wir gelernt, wie Sie diese numerischen Tasten verwenden, um die Standardausgabe in eine Datei mit Beispielen umzuleiten.