Ich möchte eine Datei mit herunterladen Wget , aber gemäß der üblichen UNIX-Philosophie möchte ich nicht, dass es ausgegeben wird etwas wenn der Download erfolgreich ist. Wenn der Download jedoch fehlschlägt, möchte ich eine Fehlermeldung.
Das -q
Diese Option unterdrückt alle Ausgaben, einschließlich Fehlermeldungen. Wenn ich einschließe -nv
Option stattdessen druckt Wget immer noch (auf stderr):
2012-05-03 16:17:05 URL:http://example.net/ [2966] -> "index.html" [1]
Wie kann ich auch diese Ausgabe entfernen und trotzdem Fehlermeldungen erhalten?
error_log=$(wget -nv example.net 2>&1) || echo $error_log
ist eine elegantere Lösung, aber immer noch unbeholfen.Versuchen
curl
stattdessen:Lange Version:
GNOME-Benutzer können Gvfs ausprobieren:
quelle
--fail
? Wäre es nicht sinnvoll, HTTP-Fehler als etwas zu behandeln, das Sie zu stderr bringen möchten?--fail
und--show-error
tut.Da derzeit alle Wget-Ausgaben an stderr gehen, scheint es, als müssten Sie die Wget-Quelle patchen, um diesen 'eleganten Weg' zu lösen.
Der Quellentwurf von wget bestimmt den Unterschied der Ausführlichkeitsniveaus zwischen den Nachrichten und nicht nur eine einfache Aufteilung zwischen Fehlern und Fehlernachrichten.
Es gibt einen offenen Fehler darüber http://savannah.gnu.org/bugs/?33839 und dort auch etwas ältere Diskussion. Hier ist ein empfohlener Patch http://www.mail-archive.com/wget%40sunsite.dk/msg03289.html und hier gibt es eine Antwort von Hrvoje Niksic http://www.mail-archive.com/wget%40sunsite.dk/msg03330.html .
Abgesehen davon gibt es natürlich die gute Lösung, die Sie in einem Kommentar zur weniger eleganten Lösung von Foon vorgeschlagen haben.
quelle
Sie können die Ausgabe auch an weiterleiten
grep
und die Erfolgsmeldung herausfiltern.Das sollte funktionieren:
quelle