command
stdoutとstderrを次にリダイレクトしたいと思います。logfile.txt
そして到着するotherfile.txt
。
現在、私は次のように両方をキャプチャしています。
command >> logfile.txt 2>> logfile.txt
これはうまくいきますが、うまくいきません。
node myscript.js 2>&1 >> logfile.txt
これは標準出力にのみ記録されます。 2番目のファイルを追加したい場合は、私が見つけた方法2>&1
はtee
。
私は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