標準出力とエラー出力を1つのファイルに蓄積し、エラー出力を別々のファイルに抽出する方法はありますか?

標準出力とエラー出力を1つのファイルに蓄積し、エラー出力を別々のファイルに抽出する方法はありますか?

いくつかのbashスクリプトを実行し、すべての出力をファイルにキャプチャしたいと思います。これは簡単です。ファイル記述子 2 を標準出力と同じ場所にリダイレクトし、ファイル記述子 1 に書き込みます。

しかし、同時にエラー出力のみを特殊ファイルに抽出するにはどうすればよいですか?

背景は次のとおりです。一部のエラーが発生した場合は、スクリプトの実行で特別なエラーファイルを生成したいのですが、すべての出力メッセージのコンテキストでエラーが正確に発生した場所やその他のエラーを説明する可能性のあるエラーメッセージも表示したいと思います。可能追加のデバッグメッセージまたはエラーコンテキスト。

また、実行中にどのエラーメッセージが生成されるかを事前に知る方法がないため、一部のエラーが発生したため、特定の文字列に対して生成された出力全体に対して一部の後処理フィルタリングを実行することはできません。 、どの文字列をターゲティングする必要がありますか?

重複としてマークされた編集元の質問:bashソリューション

{ your-cmd 2>&1 >&3 3>&- | tee stderr.log 3>&-; } > stderr+stdout.log 3>&1

ここで提案:

bash stdout + stderrを1つのファイルにリダイレクトし、stderrを別のファイルにリダイレクトします。

私には効果がありません。 2つの同じファイルを生成し、エラーファイルの内容は標準出力ファイルの内容と同じです。

ベストアンサー1

おすすめ記事