Как перенаправить stdout + stderr в один файл, сохраняя потоки отдельно?
Перенаправление stdout + stderr таким образом, что оба записываются в файл, а вывод на stdout все же достаточно прост:
cmd 2>&1 | tee output_file
Но теперь оба stdout / stderr из cmd приходят на стандартный вывод. Я хотел бы записать stdout + stderr в тот же файл (так что порядок сохраняется, предполагая, что cmd является однопоточным), но затем все еще можно перенаправить их отдельно, что-то вроде этого:
some_magic_tee_variant combined_output cmd > >(command-expecting-stdout) 2> >(command-expecting-stderr)
Таким образом, комбинированный_отчет содержит оба с сохраненным порядком, но команда-ожидающий-stdout получает только stdout, а команда-ожидающий-stderr получает только stderr. По сути, я хочу войти в stdout + stderr, при этом позволяя stdout и stderr отдельно перенаправляться и передаваться по конвейеру. Проблема с тройным подходом заключается в том, что он объединяет их. Есть ли способ сделать это в bash / zsh?