stderrのみをリダイレクトするにはどうすればよいですか?


13

これを行うのに少し問題があります。コンパイルされた.javaファイルを実行し、stderrのみをerrorというファイルにリダイレクトする必要があります。したがって、.javaファイルの名前はjavaProgram.javaです。

これは私が試したものです:

java javaProgram 2> error

しかし私が

cat error

特定の.javaファイルにエラーがないことを知っていても、そこには何かがあるようです。私は何か間違っていますか?このエラーファイルに表示したいのはエラーだけで、それ以外はありません。

回答:


16

あなたの最初の試みは正しかった。2>filenamestderrをリダイレクトする方法です。プログラムがstderrにいくつかの非エラーを書き込んでいるか、javaプログラムがstderrに出力する他のプログラムを実行している可能性があります。


1

簡単な答えは、それは不可能だということです。標準エラーは診断出力の書き込みに使用され、診断/エラー出力とは何かを定義するのはアプリケーション次第です。これはPOSIX標準に準拠しています。


2
POSIX仕様を引用する場合は、ドキュメント全体ではなく、特定のセクションを引用してください。それは巨大です。
ヨルダン2013年

いつstderrをPOSIXのファイルにリダイレクトできないのですか?そのための実際の見積もりを提供する必要があります。
l0b0 2013年

1
@ l0b0それはJeightが言っていることではありません。STDOUTへの移行とSTDERRへの移行を決定するのはアプリケーション次第です。たとえば、すべてをSTDOUTに押し込むことは完全に可能であり、STDERRをリダイレクトしても効果はありません。または、この場合のように、厳密にはエラーではないものをSTDERRに入れることができます(標準的な方法)。他の診断のエラーを解析できる唯一の方法は、エラーに「ERROR:」などのマークが付いている場合です。役立つかもしれない冗長スイッチがあるかもしれませんが、それはプログラム固有です。
evilsoup 2013年

OPは、意味的に異なる2つの問題を提起しました。「stderrのみをエラーと呼ばれるファイルにリダイレクトする」と「このエラーファイルに表示するのはエラーであり、それ以外のものではない」です。その最初の部分は確かに不可能ではありません、私のポイントです。
l0b0 2013年

@ l0b0逆方向です。OPは間違いなくstderrをerrorというファイルにリダイレクトできます。stderrのコンテンツはユーザーではなくアプリケーションによって制御されるため、彼はどのJavaがstderrとして出力するかを選択できません。彼ができることは、実際のエラーメッセージのためにstderrが渡されたファイルをgrepすることです。
Jeight、2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.