進捗レポートとログ情報(「Doing foo; foo done」など)を印刷する場所に関する公式のPOSIX、GNU、またはその他のガイドラインはありますか?個人的には、標準エラー出力にリダイレクトして、プログラムの実際の出力のみを取得できるように、標準エラー出力に書き込む傾向があります。最近、進捗レポートは実際にはエラーではなく、エラーメッセージのみがstderrに出力されるため、これは良い方法ではないと言われました。
両方のポジションが理にかなっており、もちろん、あなたがしていることの詳細に応じてどちらかを選択することができますが、これについて一般的に受け入れられている標準があるかどうか知りたいです。POSIX、GNUコーディング標準、またはその他の広く受け入れられているベストプラクティスのリストに特定のルールを見つけることができませんでした。
同様の質問がいくつかありますが、これらは正確な問題に対処していません。
シェルスクリプトでstderrへのリダイレクトを使用する場合:受け入れられた答えは、私がする傾向があることを示唆しています。ただし、これはユーザーの意見として提示されていますが、引数によってサポートされています。
使用法メッセージはstderrまたはstdoutに送信する必要がありますか?:これはヘルプメッセージに固有ですが、GNUコーディング標準を引用しています。これは私が探している種類のもので、ヘルプメッセージだけに制限されていません。
それでは、進捗レポートやその他の情報メッセージ(プログラムの実際の出力の一部ではない)を印刷する場所に関する公式ルールはありますか?
stderr
、--verbose
フラグが使用されている場合を除き、エラーメッセージの報告にのみ使用することです。この場合、進捗レポートも含まれます。
stdout
結果と一緒にスピナーなどを印刷することは、結果を役に立たなくする安全な方法です。結果を他のプログラムにパイプする必要がある場合、そのプログラムは結果をスピナーから分離する必要があります。また、出力をファイルにリダイレクトすると、スピナーを見ることができなくなります。私見では。