stdout に出力しながら両方がファイルに書き込まれるように stdout+stderr をリダイレクトするのは簡単です。
cmd 2>&1 | tee output_file
しかし、今ではcmdからのstdout/stderrの両方がstdoutに来ています。stdout+stderr を同じファイルに書き込みたいのですが (したがって、cmd がシングル スレッドであると仮定して順序が保持されます)、次のように個別にリダイレクトすることもできます。
some_magic_tee_variant combined_output cmd > >(command-expecting-stdout) 2> >(command-expecting-stderr)
したがって、結合された出力には順序が保持された両方が含まれますが、command-expecting-stdout は stdout のみを取得し、command-expecting-stderr は stderr のみを取得します。基本的に、stdout と stderr を個別にリダイレクトしてパイプ処理できるようにしながら、stdout+stderr をログに記録したいと考えています。ティーアプローチの問題は、それらを一緒にグロブすることです。bash/zsh でこれを行う方法はありますか?