stdoutとstderrをログファイルにコピーし、コンソールにstderr出力のみを表示し、stderrメッセージを別のファイルに書き込みます。

stdoutとstderrをログファイルにコピーし、コンソールにstderr出力のみを表示し、stderrメッセージを別のファイルに書き込みます。

次のようにbashスクリプトで出力リダイレクトを実行する必要がある状況があります。

  1. コンソールにはエラーメッセージのみが表示されます。
  2. エラーメッセージは、errout.logなどの特定のファイルにも記録する必要があります。
  3. 標準出力とエラーメッセージはどちらもallout.logなどのファイルに書き込む必要があります。
  4. それほど重要ではなく、持っていればいいのですが、おそらく多くの努力をかけて達成できるでしょう。 allout.logの順序はおそらく非常に似ているか、メッセージが表示される順序とまったく同じです。

他の同様の質問と回答でまったく同じ状況が見つかりませんでした。

ベストアンサー1

zshではfoo 2>&2 2> err.log > all.log 2>&1

Bashではこれがうまくいくかもしれません:

foo 2>&1 >> all.log | tee -a all.log err.log >&2

または

{ foo >> all.log; } 2>&1 | tee -a all.log err.log >&2

おすすめ記事