標準出力と標準エラー出力を別々のファイルと画面に出力する
標準出力をファイルと画面に両方出力する場合、
command1 | tee out.txt
とするし、標準エラー出力もファイルと画面に出力したい場合は
command 2>&1 | tee out.txt
とするのだけども、標準出力と標準エラー出力を別々のファイルに保存したいことがあった。
以下のようにすれば良いのか。
{ { command1 | tee out.txt >&3; } 2>&1 | tee err.txt 1>&2;} 3>&1
ややこしいな。
command1 = {echo "hoge"; echo "fuga" >&2;}
として確認してみる。
$ { { { { echo "hoge"; echo "fuga" >&2; } | tee out >&3; } 2>&1 | tee err 1>&2;} 3>&1; } > out2 2>err2 $ cat out hoge $ cat err fuga $ cat out2 hoge $ cat err2 fuga
問題なさそう