2014-10-29 44 views
1

我具有由下面的命令行交互所示的问题:为什么当没有错误并使用-nv时,wget仍会打印到stderr?

$ 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(非冗余,但仍打印错误信息),以及i重定向所有输出到out.log,所以没有东西应该在标准输出上打印,但是信息仍然会打印到终端,我只能假设它来自stderr。有谁知道为什么wget会这么做?我会如何关闭它,并在出现实际错误时仍保留错误日志记录?

非常感谢!

杰森

回答

0

使用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 
2

the manual说,你正在寻找的选项是-q。 “非冗长”仅仅关闭状态报告详细

wget中有点奇怪的设计决定是更喜欢curl的原因之一。

+0

OP想要显示错误消息,但是'wget -q http:// www.stackoverflow.invalid'不会打印任何消息。 – 2014-10-29 19:48:40

相关问题