为什么我不能让 wget 将标准输出通过管道传输到 /dev/null?

Har*_*her 0 linux ubuntu wget gnu

当我运行此命令时,它按预期工作:

wget -p https://www.google.com/
Run Code Online (Sandbox Code Playgroud)

运行此命令后,我检查错误代码

echo $?
Run Code Online (Sandbox Code Playgroud)

这将返回 0,表示上次运行的命令没有遇到任何错误。

现在我运行:

wget -p https://www.google.com/ >/dev/null
Run Code Online (Sandbox Code Playgroud)

最后一个命令应该抑制标准输出 - 但它没有。那么发生了什么?这几乎似乎是 wget 特有的,因为我以前从未在使用其他命令时遇到过管道标准输出的问题。

还值得注意的是,如果您运行:

wget -p https://www.google.com/ 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

所有输出都被抑制。有人会关心启发一个困惑的人吗?

Ale*_*hev 7

嗯,wget -p https://www.google.com/ &> /dev/null正在工作。那是因为wget输出到 stderr 而不是 stdout。您可以查看 wget手册

'--输出文件=日志文件'

将所有消息记录到日志文件。这些消息通常报告为标准错误。

  • 或者只是使用`-q`。 (2认同)