Saya bertemu masalah yang sama dan saya ingin menggunakan kembali nama file yang sama apa pun yang diberikan sisi server, dalam kasus Anda, Anda mungkin mendapatkan nama file dengan basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
maka Anda dapat menulis fungsi bash pembantu seperti:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
tetapi dalam kasus saya nama file bahkan bukan bagian dari url, ia datang dengan disposisi konten; dengan curl baris perintahnya adalah
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
Anda dapat mengabaikan -fSLitu menangani jika sisi server memberikan 302 Redirection; yang -Runtuk sisi server timestamp, -Juntuk mempertimbangkan sisi server Content-Disposition, dan -Ountuk beralih ke perilaku Download bukannya dumping di terminal;
Namun, itu masih menderita menolak untuk menimpa jika nama file ada; Saya ingin menimpa jika Last-Modifiedtimestamp sisi server lebih baru;
berakhir dengan solusi wget yang dapat melakukannya:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
yang -Nadalah untuk memeriksa server side tiemstamp dan menimpa hanya ketika sisi server memiliki versi baru; --content-dispositionadalah untuk mempertimbangkan Content-Dispositiontajuk; dan perilaku default wget adalah mengunduh, ke nama file yang diberikan dari sisi server.
dalam kasus Anda, jika Anda tidak akan peduli cap waktu, hanya saja
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curlversi apa pada sistem yang mana?