Saya ingin mengunduh file dengan Wget , tetapi sesuai filosofi UNIX yang biasa, saya tidak ingin menghasilkan apa pun jika unduhan berhasil. Namun, jika unduhan gagal, saya ingin pesan kesalahan.
The -q
pilihan menekan semua output, termasuk pesan error. Jika saya memasukkan -nv
opsi sebagai gantinya, Wget masih mencetak (pada stderr):
2012-05-03 16:17:05 URL:http://example.net/ [2966] -> "index.html" [1]
Bagaimana saya bisa menghapus bahkan output itu, tetapi masih mendapatkan pesan kesalahan?
error_log=$(wget -nv example.net 2>&1) || echo $error_log
adalah solusi yang lebih elegan, tetapi masih canggung.Coba
curl
saja:Versi panjang:
Pengguna GNOME dapat mencoba Gvfs:
sumber
--fail
? tidakkah masuk akal untuk memperlakukan kesalahan HTTP sebagai sesuatu yang ingin Anda tuju ke stderr?--fail
dan--show-error
apa yang dilakukan.Karena saat ini semua keluaran wget masuk ke stderr, tampaknya untuk menyelesaikan 'cara elegan' ini Anda harus menambal sumber wget.
wget source design mendikte perbedaan tingkat verbositas antara pesan, daripada pemisahan sederhana antara kesalahan dan bukan pesan kesalahan.
Ada bug terbuka tentang http://savannah.gnu.org/bugs/?33839 ini , dan ada juga beberapa diskusi yang lebih lama. Berikut adalah tambalan yang disarankan http://www.mail-archive.com/wget%40sunsite.dk/msg03289.html dan di sini ada jawaban dari Hrvoje Niksic tentang http://www.mail-archive.com/wget ini % 40sunsite.dk / msg03330.html .
Selain itu, tentu saja ada solusi bagus yang Anda usulkan dalam komentar untuk solusi Foon yang kurang elegan.
sumber
Anda juga dapat menyalurkan output ke
grep
dan memfilter pesan sukses.Ini seharusnya bekerja:
sumber