将stdout重定向到无法正常工作的文件

时间:2012-11-20 03:53:41

标签: linux bash io-redirection

我有一个使用子进程来获取HTML的脚本:

misha@misha-K42Jr:~/git/domain_classifier$ python webkit_retrieve.py error-cut.txt html/error -N 5
http://kurabo.co.jp HostNotFoundError
http://monarch.com HostNotFoundError
http://nssmgmt.com HostNotFoundError
http://sbcglobal.net HostNotFoundError
http://dynamixcorp.com SslHandshakeFailedError
http://groupe-synox.com RemoteHostClosedError
QFont::setPixelSize: Pixel size <= 0 (0)
http://www.cnn.com NoError
http://pacbell.net TimeoutError

如果我运行相同的脚本,但是将输出重定向到文件,则输出中什么也得不到:

misha@misha-K42Jr:~/git/domain_classifier$ python webkit_retrieve.py error-cut.txt html/error -N 5 > stdout.txt
QFont::setPixelSize: Pixel size <= 0 (0)
misha@misha-K42Jr:~/git/domain_classifier$ cat stdout.txt
misha@misha-K42Jr:~/git/domain_classifier$

为什么输出为空?它是否应该包含在第一种情况下打印到stdout的相同内容?

4 个答案:

答案 0 :(得分:18)

使用&>进行重定向,这应该将stdoutstderr重定向到指定的文件

答案 1 :(得分:2)

您已将stdout发送到该文件,但您的程序正在报告发送给stderr的错误。要设置stderr的重定向,请使用2>语法。

此链接可能有所帮助:http://www.tldp.org/LDP/abs/html/io-redirection.html

答案 2 :(得分:1)

您的输出将导致标准错误。尝试使用以下内容重定向stderr和stdout:

<command> 2>&1 <file>

答案 3 :(得分:0)

我有一个QApplication作为脚本的一部分。似乎这在某种程度上影响了输出重定向。没有QApplication的其他脚本似乎按预期重定向。它可能是某个地方的错误,但我不能打扰它。