てきとうなメモ

本の感想とか技術メモとか

標準出力と標準エラー出力を別々のファイルと画面に出力する

標準出力をファイルと画面に両方出力する場合、

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

問題なさそう