Ich habe am Ende herausgefunden, wie ich es tun kann, nachdem ich auf dieser Seite Ratschläge gegeben hatte . Ich muss stderr umleiten, um tee
dann die Ausgabe von tee
back nach stderr umzuleiten .
find /var/log 2> >(tee foo.file >&2)
In einem Bash-Skript möchte ich einen Befehl ausführen, während der stderr an eine Datei und an das Terminal geleitet wird. Ich möchte jedoch, dass stderr auf dem Dateideskriptor '2' verbleibt, damit ich ihn von einem externen Prozess analysieren kann, der dieses Bash-Skript aufruft.
Alle Lösungen, die ich bisher gesehen habe, beinhalten das Austauschen von stdout mit stderr und das anschließende Abschlagen in eine andere Datei, zum Beispiel :
find /var/log 3>&1 1>&2 2>&3 | foo.file
Wenn ich dieses Skript von einem anderen aufrufen möchte, geht der stderr zum stdout und stdout zum stderr, was für mich nicht gut ist. Ich habe versucht, sie wieder so zu tauschen:
find /var/log 3>&1 1>&2 2>&3 | foo.file 4>&1 1>&2 2>&4
aber das geht nicht.
Ich habe am Ende herausgefunden, wie ich es tun kann, nachdem ich auf dieser Seite Ratschläge gegeben hatte . Ich muss stderr umleiten, um tee
dann die Ausgabe von tee
back nach stderr umzuleiten .
find /var/log 2> >(tee foo.file >&2)