11

我有一个使用子进程来获取 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$

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

问题不是关于合并标准输出和标准错误,而是为什么重定向标准输出会产生一个空文件

4

3 回答 3

25

用于&>重定向,这应该重定向stdoutstderr指定文件

于 2012-11-20T08:18:43.117 回答
1

您已将标准输出发送到该文件,但您的程序正在报告错误,这些错误会发送到标准错误。要设置 stderr 的重定向,请使用2>语法。

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

于 2012-11-20T03:59:25.367 回答
-2

您的输出将输出到 stderror。尝试使用以下命令重定向 stderror 和 stdout:

<command> 2>&1 <file>
于 2012-11-20T04:00:08.813 回答