Je veux télécharger un fichier avec Wget , mais selon la philosophie UNIX habituelle, je ne veux pas qu'il génère quoi que ce soit si le téléchargement réussit. Cependant, si le téléchargement échoue, je veux un message d'erreur.
L' -q
option supprime toutes les sorties, y compris les messages d'erreur. Si j'inclus l' -nv
option à la place, Wget imprime toujours (sur stderr):
2012-05-03 16:17:05 URL:http://example.net/ [2966] -> "index.html" [1]
Comment puis-je supprimer même cette sortie, mais toujours recevoir des messages d'erreur?
error_log=$(wget -nv example.net 2>&1) || echo $error_log
est une solution plus élégante, mais toujours maladroite.Essayez
curl
plutôt:Version longue:
Les utilisateurs de GNOME peuvent essayer Gvfs:
la source
--fail
? ne serait-il pas logique de traiter les erreurs HTTP comme quelque chose que vous voudriez voir sur stderr?--fail
et--show-error
fait.Étant donné qu'actuellement, toutes les sorties wget sont envoyées à stderr, il semble que pour résoudre ce problème «de manière élégante», vous devez corriger la source wget.
La conception de la source wget dicte la différence de niveau de verbosité entre les messages, plutôt qu'une simple répartition entre les messages d'erreur et non d'erreur.
Il y a un bogue ouvert à ce sujet http://savannah.gnu.org/bugs/?33839 , et il y a aussi des discussions plus anciennes. Voici un correctif suggéré http://www.mail-archive.com/wget%40sunsite.dk/msg03289.html et ici il y a une réponse de Hrvoje Niksic à ce sujet http://www.mail-archive.com/wget % 40sunsite.dk / msg03330.html .
À part cela, il y a bien sûr la bonne solution que vous avez proposée dans un commentaire à la solution moins élégante de Foon.
la source
Vous pouvez également diriger la sortie vers
grep
et filtrer le message de réussite.Cela devrait fonctionner:
la source