मैं एक ही समस्या से मिला और मैं उसी फ़ाइलनाम का पुन: उपयोग करना चाहता हूं जो भी सर्वर साइड देता है, आपके मामले में आपको फ़ाइल नाम मिल सकता है 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प्रणाली पर कौन सा संस्करण?