stdout
とstdout
の両方に出力されるようにstderr
を分割したい。これはtee
の仕事のように聞こえますが、構文は私を回避しています-
./script.sh | tee stderr
もちろん、実際にどのようにstderr
をここで参照すべきですか?
./script.sh | tee /dev/fd/2
これはOSのサポートに依存することに注意してください。これはTeeの組み込み機能ではないため、普遍的なものではありません(ただし、MacOS、Linux、Solaris、FreeBSD、おそらくその他でも機能します)。
インタラクティブシェルと非インタラクティブシェルの両方で機能する、私が見つけた唯一のクロスプラットフォームの方法は次のとおりです。
command | tee >(cat 1>&2)
Teeの引数は、ファイルまたはファイルハンドルです。 プロセス置換 を使用して、出力をプロセスに送信します。プロセス= cat =では、stdoutをstderrにリダイレクトします。シェル(bash/ksh)は、1および2のファイル記述子の設定を担当します。