STDERR
を使用してSTDOUT
とtee
の両方を同じファイルにキャプチャするのに最適な順序はわかりません。私がファイルにパイプしたい場合、リダイレクト後にファイルハンドルをマップする必要があることを知っています。
find . >/tmp/output.txt 2>&1
これは、シェルにSTDOUT
を/tmp/output.txt
に送信し、次にSTDERR
をSTDOUT
に送信するように指示します(現在は/tmp/output.txt
に送信中です)。
ファイルをリダイレクトする前に2>&1
を実行しようとすると、望ましい効果が得られません。
ただし、tee
を使用してパイプしたい場合は、次のようにする必要があります。
find . |tee /tmp/output.txt 2>&1 # or
find . 2>&1 |tee /tmp/output.txt # ?
後者;これは、元のコマンドのSTDOUTとSTDERRが同じfdに移動するようにし、それらを一緒にTに送ります。前者の場合、STDOUTと結合するのはteeコマンドのSTDERRです。