पुनर्निर्देशित होने पर सही नाम वाली फ़ाइल को कैसे मिटाएं?


117

इसलिए Google और सुपर उपयोगकर्ता (और मैन पेज स्कैनिंग) पर खोज करने के कुछ समय बाद मुझे कुछ ऐसा करने का उत्तर नहीं मिला जो मुझे लगता है कि सरल होना चाहिए:

यदि आप यहां जाते हैं:

http://www.vim.org/scripts/script.php?script_id=2340

और विषय डाउनलोड करने का प्रयास करें:

http://www.vim.org/scripts/download_script.php?src_id=9750

इस तरह:

wget http://www.vim.org/scripts/download_script.php?src_id=9750

आप संभवतः एक फ़ाइल के साथ समाप्त होंगे download_script.php?src_id=9750

लेकिन मैं चाहता हूं कि इसे बुलाया जाए molokai.vim, जो कि अगर मैंने इस फाइल को डाउनलोड करने के लिए एक ब्राउज़र का उपयोग किया तो क्या होगा।

वांछित प्रभाव के लिए मुझे किन विकल्पों को निर्दिष्ट करने की आवश्यकता है?

मैं भी कर्ल समतुल्य कमांड के साथ ठीक हूं।

जवाबों:


162
-O file
--output-document=file

दस्तावेजों को उपयुक्त फ़ाइलों को नहीं लिखा जाएगा, लेकिन सभी को एक साथ समाहित किया जाएगा और फ़ाइल को लिखा जाएगा। यदि -फ़ाइल के रूप में उपयोग किया जाता है, तो लिंक रूपांतरण को अक्षम करने के लिए दस्तावेज़ मानक आउटपुट पर मुद्रित किए जाएंगे। ( ./-शाब्दिक रूप से नामित फ़ाइल में प्रिंट करने के लिए उपयोग करें -.)

इसलिए,

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750

या यदि आप wgetअपने संस्करण द्वारा समर्थित - - कॉन्टेंट-डिस्पेंस विकल्प का उपयोग करके इसे प्राप्त करने में सक्षम हो सकते हैं ।

wget --content-disposition http://www.vim.org/scripts/download_script.php?src_id=9750

मैन पेज के अनुसार कैविट्स,

--content-disposition

यदि यह "सामग्री-विवाद" हेडर के लिए प्रयोगात्मक (पूरी तरह कार्यात्मक नहीं) समर्थन पर सेट है, तो सक्षम है। यह वर्तमान में "HEAD" अनुरोध के लिए सर्वर पर अतिरिक्त राउंड-ट्रिप कर सकता है, और कुछ बग से पीड़ित होने के लिए जाना जाता है, यही कारण है कि यह वर्तमान में डिफ़ॉल्ट रूप से सक्षम नहीं है।

यह विकल्प कुछ फ़ाइल-डाउनलोडिंग सीजीआई कार्यक्रमों के लिए उपयोगी है जो "कंटेंट-डिस्पोजल" हेडर का उपयोग करके यह बताता है कि डाउनलोड की गई फ़ाइल का नाम क्या होना चाहिए।

आप उसी स्वचालित व्यवहार को प्राप्त कर सकते हैं curl, जिसका उपयोग करके,

curl -JLO http://www.vim.org/scripts/download_script.php?src_id=9750

-Oदूरस्थ नाम का उपयोग करता है, और URL के बजाय सामग्री-स्वभाव हेडर से उस नाम को प्राप्त करने के लिए -Jमजबूर करता -Oहै, और -Lयदि आवश्यक हो तो पुनर्निर्देशित करता है।


2
मैं निर्दिष्ट किया है चाहिए कि यह होना करने के लिए स्वत: की जरूरत है
audio.zoom

जैसा कि मैं इसे समझता हूं, वेब पेज पर निर्भर करता है कि अगर कोई फ़ाइल इंगित करता है, तो उसे सही ढंग से सूचित करने के लिए वेब कंटेंट हैडर का उपयोग करते हुए उसे कुछ अलग करने की जरूरत होती है, जो wget पूरी तरह से समर्थन दे भी सकती है और नहीं भी। तो आप इसे स्वचालित रूप से wget के साथ नहीं कर सकते। वेब पेज के आधार पर कर्ल को कम या ज्यादा सफलता मिल सकती है।
आठबेटटोनी 12

बिंदु जटिल पार्सिंग के बिना इन चीजों को स्क्रिप्ट करने में सक्षम होने के लिए है, कर्ल ठीक है, लेकिन अभी तक मैं उस के लिए सभ्य विकल्प एकत्र करने में सक्षम नहीं हुआ
हूं

2
अहा - मैं गलत हूं, अद्यतन जवाब देखें। यही कारण है कि स्टैकएक्सचेंज साइटें अच्छी तरह से काम करती हैं - हर कोई कुछ सीखता है, यहां तक ​​कि लोग सवालों के जवाब भी देते हैं!
आठबेटटोनी

1
इसने मेरे लिए स्टैकएक्सचेंज पॉडकास्ट के लिए काम किया, जो मुझे थोड़ी देर के लिए बग रहा था। धन्यवाद।
रिचर्ड कैंपबेल

75

Wget के साथ आप ऐसा कर सकते हैं:

wget --trust-server-names <url> 

अंतिम फ़ाइल नाम का उपयोग करके फ़ाइल को सहेजने के लिए सर्वर आपको देता है।


2
मुझे आश्चर्य है कि अंतर क्या है--trust-server-names--content-disposition
जेम्स दिवाली

3
ऐसा लगता है कि --trust-server-namesकिसी भिन्न फ़ाइल पर रीडायरेक्ट होता है, और --content-dispositionप्रतिक्रिया शीर्षलेख में निर्दिष्ट नाम के साथ फ़ाइल को किसी भी पुनर्निर्देशन की आवश्यकता के बिना नाम देता है।
असफंद क़ाज़ी

1
यह डिफ़ॉल्ट कार्यक्षमता क्यों नहीं है?!?
होपसेकर

8
@hopeseekr सर्वर शरारती हो सकता है और यदि आप ध्यान से नहीं देख रहे हैं तो फ़ाइल .bashrc पर कॉल करें। lists.gnu.org/archive/html/bug-wget/2012-04/msg00059.html
पैट्रिक कॉनडी

3

आप aria2c का उपयोग भी कर सकते हैं - यह सामग्री-विवाद हेडर के साथ अच्छी तरह से काम करता है।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.