मैं एक ही समस्या से मिला और मैं उसी फ़ाइलनाम का पुन: उपयोग करना चाहता हूं जो भी सर्वर साइड देता है, आपके मामले में आपको फ़ाइल नाम मिल सकता है basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
तो आप एक हेल्पर बैश फ़ंक्शन लिख सकते हैं जैसे:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
लेकिन मेरे मामले में फ़ाइल नाम भी यूआरएल का हिस्सा नहीं है, यह सामग्री-स्वभाव के साथ आता है; कर्ल के साथ कमांड लाइन है
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
-fSL
यदि सर्वर पक्ष 302 पुनर्निर्देशन देता है तो आप इसे अनदेखा कर सकते हैं ; -R
सर्वर साइड टाइमस्टैम्प के लिए, सर्वर साइड -J
पर विचार करने के लिए Content-Disposition
, और -O
टर्मिनल पर डंपिंग के बजाय व्यवहार डाउनलोड करने के लिए स्विच करने के लिए;
हालाँकि, यह अभी भी अधिलेखित करने से इनकार करता है यदि फ़ाइल नाम मौजूद है; मैं यह अधिलेखित करना चाहता हूं कि क्या सर्वर साइड Last-Modified
टाइमस्टैम्प नया है;
ऐसा करने में सक्षम एक wget समाधान के साथ समाप्त होता है:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
-N
सर्वर साइड tiemstamp की जाँच करें और ऊपर लिख ही जब सर्वर साइड नया संस्करण है करने के लिए है, हेडर --content-disposition
पर विचार करना है Content-Disposition
; और wget का डिफ़ॉल्ट व्यवहार सर्वर साइड से दिए गए फ़ाइल नाम पर डाउनलोड करना है।
आपके मामले में, अगर आप टाइमस्टैम्प की परवाह नहीं करेंगे, तो यह बस है
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
प्रणाली पर कौन सा संस्करण?