Réponses:
{ a && b && c; } >capture_file 2>&1
Notez l'ordre des redirections: vous devez d'abord rediriger stdout.
2>&1signifie dupliquer la destination de stdout (1) vers stderr (2), donc ce serait inutile à moins que vous n'ayez préalablement configuré la redirection stdout.
2>capture_file >&2(mais pas, car ce n'est pas idiomatique). L'important est que vous redirigiez l'un d'entre eux vers un fichier avant de dupliquer ce flux vers l'autre.
Outre l'utilisation du regroupement de commandes, {}vous pouvez également exécuter les commandes dans un sous-shell et capturer la sortie (et / ou l'erreur) à la fois:
( a && b && c ) >file.txt 2>&1
Exemple :
$ ( 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