试图在bash shell中捕获javac输出

jce*_*e14 11 bash shell javac

我正在尝试将java编译器输出重定向到文件.我认为它应该是:

javac file.java > log.txt
Run Code Online (Sandbox Code Playgroud)

或者其他的东西.相反,我看到终端上的所有输出,而log.txt中没有任何内容!

另外,如果我也想记录错误,我该怎么做

javac file.java 2>&1 > log.txt
Run Code Online (Sandbox Code Playgroud)

Jul*_*ter 14

javac file.java 2> log.txt
Run Code Online (Sandbox Code Playgroud)

原因是您有两个输出文件描述符而不是一个.通常的一个是stdout,您可以使用>重定向,它应该用于结果输出.第二个,stderr,用于人类可读输出,如警告,错误,当前状态等,这个输出重定向为2>.

你的第二行,使用2>&1,将stderr重定向到stdout,最后将stdout重定向到log.txt.


Bil*_*ard 7

你有没有尝试过

javac -Xstdout log.txt file.java
Run Code Online (Sandbox Code Playgroud)

这会将编译器错误发送到日志文件而不是stderr.