我通过以下命令行交互说明了一个问题:
$ 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为什么这样做?如果出现实际错误,我该如何关闭它并仍保留错误记录?
非常感谢!
杰森
答案 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