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

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

Mit einer aktuellen Bash können Sie die Prozesssubstitution verwenden.

foo 2> >(tee stderr.txt)

Dies sendet einfach stderr an ein Programm, das tee.

ausführt

Tragbarer

exec 3>&1 
foo 2>&1 >&3 | tee stderr.txt

Dies macht den Dateideskriptor 3 zu einer Kopie der aktuellen Standardausgabe (d. h. des Bildschirms), richtet dann die Pipe ein und führt foo 2>&1 >&3 aus . Dies sendet die stderr von foo an dieselbe Stelle wie die aktuelle stdout, die die Pipe ist, und sendet dann die stdout an fd 3, die ursprüngliche Ausgabe. Die Pipe speist die ursprüngliche Stderr von foo to tee, die sie in einer Datei speichert und an den Bildschirm sendet.


Linux
  1. So leiten Sie die Ausgabe in eine Datei und Stdout in Linux um

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

  3. Wiederherstellen von stdout und stderr auf die Standardwerte

  4. Ist es möglich, dass der Linux-Dateideskriptor 0 1 2 nicht für stdin, stdout und stderr gilt?

  5. Erfassen von STDERR und STDOUT in einer Datei mit tee

So leiten Sie stderr in Bash auf stdout um

Wie leite ich nur Stderr um?

Ausgabe umleiten und leiten?

Nur Stderr auf dem Bildschirm anzeigen, aber sowohl Stdout als auch Stderr in Datei schreiben?

Verwirrt über stdin, stdout und stderr?

Was genau ist <() in bash (und =() in zsh)?