Respuestas:
{ a && b && c; } >capture_file 2>&1
Tenga en cuenta el orden de las redirecciones: primero debe redirigir stdout.
2>&1significa duplicar el destino de stdout (1) a stderr (2), por lo que sería inútil a menos que haya configurado la redirección de stdout de antemano.
2>capture_file >&2(pero no, porque eso no es idiomático). Lo importante es que redirija uno de ellos a un archivo antes de duplicar ese flujo al otro.
Además de usar la agrupación de comandos {}, también puede ejecutar los comandos en una subshell y capturar la salida (y / o error) de una vez:
( a && b && c ) >file.txt 2>&1
Ejemplo:
$ ( 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