2008-11-25 49 views
10

我试图将java编译器输出重定向到一个文件。 我认为它应该是:试图在bash shell中捕获javac输出

javac file.java > log.txt 

什么的。相反,我看到终端上的所有输出,而log.txt中什么都没有!

另外,如果我想记录错误太多,我该怎么办

javac file.java 2>&1 > log.txt 

回答

13
javac file.java 2> log.txt 

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

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

+0

我看到重定向stderr给我输出我想要的。为什么一切都记录在标准错误,没有标准输出?另外,你能告诉我为什么javac file.java 2>&1> log.txt不起作用吗? – jcee14 2008-11-25 15:48:41

7

你试过

javac -Xstdout log.txt file.java 

这将发送编译器错误日志文件,而不是stderr。