Quiero descargar un archivo con Wget , pero según la filosofía habitual de UNIX, no quiero que muestre nada si la descarga se realiza correctamente. Sin embargo, si la descarga falla, quiero un mensaje de error.
La -q
opción suprime todos los resultados, incluidos los mensajes de error. Si incluyo la -nv
opción en su lugar, Wget todavía imprime (en stderr):
2012-05-03 16:17:05 URL:http://example.net/ [2966] -> "index.html" [1]
¿Cómo puedo eliminar incluso esa salida, pero aún así obtener mensajes de error?
error_log=$(wget -nv example.net 2>&1) || echo $error_log
Es una solución más elegante, pero aún torpe.Intenta en su
curl
lugar:Versión larga:
Los usuarios de GNOME pueden probar Gvfs:
fuente
--fail
? ¿No tendría sentido tratar los errores HTTP como algo que desearía ir a stderr?--fail
y--show-error
hace.Como actualmente toda la salida de wget va a stderr, parece que para resolver esta 'forma elegante' tendría que parchear la fuente de wget.
El diseño de la fuente de wget dicta la diferencia de nivel de verbosidad entre mensajes, en lugar de una simple división entre mensaje de error y no mensaje de error.
Hay un error abierto sobre este http://savannah.gnu.org/bugs/?33839 , y también hay una discusión más antigua. Aquí hay un parche sugerido http://www.mail-archive.com/wget%40sunsite.dk/msg03289.html y aquí hay una respuesta de Hrvoje Niksic sobre este http://www.mail-archive.com/wget % 40sunsite.dk / msg03330.html .
Aparte de eso, existe, por supuesto, la buena solución que propuso en un comentario a la solución menos elegante de Foon.
fuente
También puede canalizar la salida
grep
y filtrar el mensaje de éxito.Esto debería funcionar:
fuente