Відповіді:
{ a && b && c; } >capture_file 2>&1
Зверніть увагу на порядок переадресацій: спочатку потрібно перенаправити stdout.
2>&1означає дублювання пункту призначення stdout (1) на stderr (2), тому було б марно, якщо ви не встановили заздалегідь перенаправлення stdout.
2>capture_file >&2(але не варто, тому що це не ідіоматично). Важливим є те, що ви перенаправляєте один з них на файл, перш ніж дублювати цей потік на інший.
Крім використання групувань команд, {}ви також можете запускати команди в підклітині і одразу фіксувати вихід (та / або помилку):
( a && b && c ) >file.txt 2>&1
Приклад:
$ ( 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