为什么wget在没有错误并且使用-nv时仍然打印到stderr?

时间:2014-10-29 01:45:09

标签: wget

我通过以下命令行交互说明了一个问题:

$ wget www.google.com -nv >> out.log
2014-10-28 21:41:43 URL:http://www.google.com/ [17700] -> "index.html.1" [1]

所以wget www.google.com,并使用-nv(非详细,但仍然打印错误信息),我将所有输出重定向到out.log,因此不应该在stdout上打印任何内容,但信息仍会打印到终端,我只能假设来自stderr。有谁知道wget为什么这样做?如果出现实际错误,我该如何关闭它并仍保留错误记录?

非常感谢!

杰森

2 个答案:

答案 0 :(得分:3)

如同the manual所说,您要查找的选项是-q。 "非详细"只是关闭详细状态报告。

wget中有些奇怪的设计决策是偏好curl的一个原因。

答案 1 :(得分:-1)

改为使用cURL:

$ curl -Ss http://www.stackoverflow.com -o /dev/null
(no output)

$ curl -Ss http://www.stackoverflow.invalid -o /dev/null
curl: (6) Couldn't resolve host 'www.stackoverflow.invalid'

如果您出于真正需要使用wget的原因,您可以捕获输出并仅在失败时显示:

errors=$(2>&1 wget -nv http://www.stackoverflow.com) || echo "$errors" >&2