2014-10-29 52 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

相關問題