Odpowiedzi:
{ a && b && c; } >capture_file 2>&1
Zwróć uwagę na kolejność przekierowań: najpierw musisz przekierować standardowe wyjście.
2>&1oznacza duplikowanie miejsca docelowego stdout (1) na stderr (2), więc byłoby bezużyteczne, chyba że wcześniej skonfigurowałeś przekierowanie stdout.
2>capture_file >&2(ale nie, bo to nie jest idiomatyczne). Ważne jest, abyś przekierował jeden z nich do pliku przed skopiowaniem tego strumienia do drugiego.
Oprócz korzystania z grupowania poleceń {}możesz także uruchamiać polecenia w podpowłoce i jednocześnie przechwytywać dane wyjściowe (i / lub błędy):
( a && b && c ) >file.txt 2>&1
Przykład:
$ ( 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