GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie leite ich stderr und stdout in verschiedene Dateien in derselben Zeile im Skript um?

So:

$ command >>output 2>>error

Fügen Sie sie einfach in einer Zeile hinzu command 2>> error 1>> output

Beachten Sie jedoch, dass >> dient zum Anhängen, wenn die Datei bereits Daten enthält. Wohingegen > überschreibt alle vorhandenen Daten in der Datei.

Also command 2> error 1> output wenn Sie nicht anhängen möchten.

Nur der Vollständigkeit halber können Sie 1> schreiben als nur > da der Standarddateideskriptor die Ausgabe ist. also 1> und > ist dasselbe.

Also command 2> error 1> output wird zu command 2> error > output


Versuchen Sie Folgendes:

your_command 2>stderr.log 1>stdout.log

Weitere Informationen

Die Ziffern 0 bis 9 sind Dateideskriptoren in bash.0 steht für Standardeingabe, 1 steht für Standardausgabe, 2 steht für Standardfehler. 3 bis 9 sind für jede andere vorübergehende Verwendung frei.

Jeder Dateideskriptor kann mit dem Operator > zu einer Datei oder zu einem anderen Dateideskriptor umgeleitet werden . Sie können stattdessen den Operator >> verwenden um an eine Datei anzuhängen, anstatt eine leere zu erstellen.

Verwendung:

file_descriptor > filename

file_descriptor > &file_descriptor

Siehe Advanced Bash-Scripting Guide:Chapter 20. I/O Redirection.


Oder wenn Sie Ausgaben (stdout &stderr) in einer einzigen Datei mischen möchten, können Sie Folgendes verwenden:

command > merged-output.txt 2>&1

Linux
  1. So löschen Sie Dateien und Verzeichnisse in Linux über die Befehlszeile

  2. So teilen und kombinieren Sie Dateien von der Befehlszeile in Linux

  3. So erfassen Sie Terminalsitzungen und geben sie mit dem Linux-Skriptbefehl aus

  4. Konfigurieren Sie die Shell, um Stderr und Stdout in verschiedenen Farben zu drucken?

  5. Ausgabe nach Stdout und gleichzeitig Grep in eine Datei?

So leiten Sie stderr in Bash auf stdout um

Ausgabe umleiten und leiten?

Wie drucke ich eine mehrzeilige Ausgabe in derselben Zeile?

Was ist der Unterschied beim Umleiten einer Ausgabe mit >, &>, >&und 2&>?

bash:leite stderr auf Datei und stdout + stderr auf Bildschirm um

Linux:Wie verwende ich eine Datei gleichzeitig als Ein- und Ausgabe?