13 我这样做有点麻烦。我需要运行已编译的.java文件,并且仅将stderr重定向到名为error的文件。因此.java文件名为javaProgram.java。 这是我尝试过的: java javaProgram 2> error 但是当我 cat error 似乎里面有东西,即使我知道特定的.java文件没有错误的事实。难道我做错了什么?我只想显示该错误文件,而不是其他任何错误。 bash compiling io-redirection — 约翰 source
16 您的第一次尝试是正确的;2>filename这就是您重定向stderr的方式。可能是您的程序正在向stderr写入一些非错误消息,或者Java程序正在运行其他输出到stderr的程序。 — 马克·普洛特尼克 source
1 简单的答案是不可能的。标准错误用于编写诊断输出,由应用程序定义什么是诊断/错误输出。那是根据POSIX标准。 — 身高 source 2 如果您要引用POSIX规范,请引用特定部分而不是整个文档。它超大。 — jordanm 由于什么时候无法将stderr重定向到POSIX中的文件?您必须为此提供实际报价。 — l0b0 1 @ l0b0不是Jeight在说什么。由应用程序决定什么去往STDOUT和什么去往STDERR。例如,完全有可能将所有内容推送到STDOUT中,然后重定向STDERR将无效。或者,在这种情况下,可以(和标准做法)将并非严格错误的某些内容放入STDERR。解析其他诊断程序中的错误的唯一方法是将错误标记为“ ERROR:”或其他标记。可能会有一个冗长的开关可能会有所帮助,但这是特定于程序的。 — evilsoup OP提出了两个语义上不同的问题:“仅将stderr重定向到名为error的文件”和“我希望此错误文件显示的是错误,而不是其他任何内容”。我的观点当然不是不可能的第一部分。 — l0b0 2013年 @ l0b0您已经倒退了。OP绝对可以将stderr重定向到名为error的文件。他无法选择Java作为stderr输出的内容,因为stderr的内容由应用程序而不是用户控制。他可以做的是grep stderr传递到的文件,以获取实际的错误消息。 — 高度