bashシェルでjavac出力をキャプチャしようとしています
質問
Javaコンパイラの出力をファイルにリダイレクトしようとしています。 私はそれがあるはずだと思った:
javac file.java > log.txt
または何か。代わりに、ターミナルにすべての出力が表示され、log.txtには何も表示されません!
また、エラーもログに記録したい場合は、
javac file.java 2>&1 > log.txt
?
解決
javac file.java 2> log.txt
理由は、1つではなく 2つの出力ファイル記述子があるためです。通常のものはstdoutで、>でリダイレクトできます。結果の出力に使用することになっています。 2つ目のstderrは、警告、エラー、現在のステータスなど、人間が読める形式の出力を対象としています。これは2>でリダイレクトされます。
2>& 1を使用した2行目は、stderrをstdoutにリダイレクトし、最後にstdoutをlog.txtにリダイレクトします。
他のヒント
試しましたか
javac -Xstdout log.txt file.java
これにより、stderrではなくログファイルにコンパイラエラーが送信されます。
所属していません StackOverflow