wget打印错误,但没有其他的东西

我怎样才能有wget打印错误,但没有其他的东西?

在默认行为中,它显示了一个进度条和许多东西。

在–no-verbose版本中,每个下载的文件仍然打印一行,这个我不需要。

–quiet选项使它完全安静,即使在出现错误的情况下,也不会打印任何内容。

有没有打印错误的方式,但没有别的?

使用curl,不要猜测每个错误会是什么样子。

[wizard@laptop ~] curl -s -S http://www.google.coccm/ > /dev/null && echo "TRUE" curl: (6) Couldn't resolve host 'www.google.coccm' [wizard@laptop ~]$ curl -s -S http://www.google.com/ > /dev/null && echo "TRUE" TRUE 

-s / – 沉默

 Silent mode. Don't show progress meter or error messages. Makes Curl mute. 

-S / – 显示错误

 When used with -s it makes curl show error message if it fails. 

如果你需要标准输出stderr出于某种原因。

 curl -s -S http://www.google.coccm/ 2>&1 1> /dev/null 

在这个问题上有非常好的答案,一定要检查出来,但是我所做的是这样的:

 wget [wget options] 2>&1 | grep -i "failed\|error" 

我没有看到一个选项。 你需要知道错误是什么,或者只是发生了什么? 如果您碰巧只需要知道是否有错误,则可以使用退出状态。

 if ! wget -o /dev/null www.google.com/flasfsdfsdf; then echo 'Oops!' fi 

或者可能:

 if ! wget -o logfile www.google.com/flasfsdfsdf; then cat logfile fi 

如果你想得到花哨的话,你可以把猫改成grep命令。

将标准输出redirect到/dev/null ,但将错误输出保留在您select的shell中。

在bash中这将是:

 wget [wget options] > /dev/null 

编辑:所以wget行为不端。 如果所有的错误都包含“error”这个单词,你可以通过grep

 wget [wget options] 2>&1 | grep -i "error" 

由于wget输出stderr上的所有消息,因此必须先使用redirect,然后才能将其pipe理到grep:

 wget [options] 2>&1 | grep "^wget:" 

这假定wget从“wget:”开始它的错误行。

 OUT=`wget --no-verbose -O /tmp/a http://example.com/ 2>&1` || echo $OUT 

作品。 但它总是截断输出文件,你可能会或可能不需要。

curl比较好:

 curl --fail --silent --show-error -o /tmp/a http://example.com 

如果发生错误,则不会修改输出文件。