Antworten:
{ a && b && c; } >capture_file 2>&1
Beachten Sie die Reihenfolge der Umleitungen: Sie müssen zuerst stdout umleiten.
2>&1
bedeutet, das Ziel von stdout (1) nach stderr (2) zu duplizieren. Es wäre also nutzlos, wenn Sie nicht zuvor die stdout-Umleitung eingerichtet hätten.
2>capture_file >&2
(aber nicht, denn das ist nicht idiomatischen ist). Wichtig ist, dass Sie einen von ihnen in eine Datei umleiten, bevor Sie diesen Stream in den anderen duplizieren.
Neben der Verwendung der Befehlsgruppierung {}
können Sie die Befehle auch in einer Subshell ausführen und die Ausgabe (und / oder den Fehler) sofort erfassen:
( a && b && c ) >file.txt 2>&1
Beispiel:
$ ( echo foo && echo bar && echo baz && echos foo ) >check 2>&1
$ cat check
foo
bar
baz
No command 'echos' found, did you mean:
Command 'echo' from package 'coreutils' (main)
echos: command not found