bashでstdoutとstderrを複数のファイルにリダイレクトする方法は?

bashでstdoutとstderrを複数のファイルにリダイレクトする方法は?

commandstdoutとstderrを次にリダイレクトしたいと思います。logfile.txt そして到着するotherfile.txt

現在、私は次のように両方をキャプチャしています。

command  >> logfile.txt 2>> logfile.txt

これはうまくいきますが、うまくいきません。

node myscript.js 2>&1 >> logfile.txt

これは標準出力にのみ記録されます。 2番目のファイルを追加したい場合は、私が見つけた方法2>&1tee

私はBashバージョン4.4.20(1)リリースでLinux Mint 19を使用しています。

答え1

説明したようにリダイレクトシーケンスの理解では、リダイレクトの順序が重要です。

node myscript.js 2>&1 >> logfile.txt

標準エラーを標準出力が指す場所にリダイレクトし、標準出力をにリダイレクトしますlogfile.txtいいえ標準エラーが発生しました。

順序を変更する必要があります。

node myscript.js >> logfile.txt 2>&1

2つの出力がログインしますlogfile.txt

ただし、次にパイプする場合は関係ありませんtee

node myscript.js 2>&1 | tee -a logfile.txt otherfile.txt

関連情報