سؤال كيفية wget ملف بالاسم الصحيح عند إعادة توجيهه؟


لذلك ، بعد بعض الوقت من البحث على Google و Super User (ومسح صفحات رجل) ، لم أتمكن من العثور على إجابة على شيء (على ما أظن) يجب أن يكون بسيطًا:

إذا ذهبت هنا:

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، وهو ما سيحدث إذا استخدمت متصفحًا لتنزيل هذا الملف.

ما الخيارات التي أحتاجها لتحديد wget للتأثير المطلوب؟

سأكون على ما يرام مع أمر معادل Curl.


95
2018-06-23 11:44


الأصل




الأجوبة:


-O file
--output-document=file

لن تتم كتابة المستندات إلى الملفات المناسبة ، ولكن سيتم تجميعها معًا ومكتوبة إلى الملف.          إذا - يستخدم كملف ، ستتم طباعة المستندات إلى الإخراج القياسي ، مما يؤدي إلى تعطيل تحويل الرابط. (استعمال ./- للطباعة إلى ملف يدعى حرفيا -.)

وبالتالي،

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

أو قد تتمكن من الحصول عليها wget لتنفيذ ذلك باستخدام الخيار --content-disposition إذا كان مدعومًا بإصدارك.

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

تحذيرات حسب صفحة الرجل ،

--content-disposition

إذا تم ضبط هذا على تشغيل ، يتم تمكين دعم تجريبي (غير كامل الوظائف) لرؤوس "ترتيب المحتوى". يمكن أن يؤدي هذا في الوقت الحالي إلى رحلات إضافية ذهابًا وإيابًا إلى الخادم لطلب "HEAD" ، ومن المعروف أنه يعاني من بعض الأخطاء ، وهذا هو سبب عدم تمكينه افتراضيًا في الوقت الحالي.

يعتبر هذا الخيار مفيدًا لبعض برامج CGI لتنزيل الملفات التي تستخدم رؤوس "ترتيب المحتوى" لوصف اسم الملف الذي تم تنزيله.

يمكنك تحقيق نفس السلوك الآلي مع curlباستخدام ،

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

-O يستخدم الاسم البعيد و -J يجبر -O للحصول على هذا الاسم من رأس ترتيب المحتوى بدلاً من عنوان URL ، و -L يتبع عمليات إعادة التوجيه إذا لزم الأمر.


142
2018-06-23 12:03



كان يجب علي تحديد أن هذا يجب أن يكون آليًا - audio.zoom
كما أفهمها ، تعتمد wget على صفحة الويب لإعلامها بشكل صحيح إذا كان عنوان URL يشير إلى ملف ويحتاج إلى حفظه بشيء مختلف ، باستخدام رأس ترتيب المحتوى ، الذي قد يدعمه أو لا يدعمه تمامًا. لذلك لا يمكنك القيام بذلك بشكل تلقائي مع wget. قد يكون حليقة النجاح أكثر أو أقل اعتمادا على صفحة الويب. - EightBitTony
الهدف هو أن تكون قادرًا على كتابة هذه الأشياء بدون تحليل معقد ، لكن التجعيد جيد ، ولكن حتى الآن لم أتمكن من جمع خيارات لائقة لذلك - audio.zoom
آها - أخطأت ، انظر إجابة محدثة. هذا هو سبب عمل مواقع stackexchange بشكل جيد - يتعلم الجميع شيئًا ما ، حتى الأشخاص الذين يجيبون على الأسئلة! - EightBitTony
هذا العمل بالنسبة لي للبودكاست stackexchange ، التي كانت التنصت لي لفترة من الوقت. شكر. - Richard Campbell


مع wget يمكنك القيام بذلك:

wget --trust-server-names <url> 

لحفظ الملف باستخدام اسم الملف الأخير الذي يعطيه الخادم.


69
2018-06-29 05:08



أتساءل ما هو الفرق بين --trust-server-names و --content-disposition - JamesTheAwesomeDude
يشبه --trust-server-names يتبع عمليات إعادة التوجيه إلى ملف مختلف ، و --content-disposition يقوم بتسمية الملف بالاسم المحدد في رأس الاستجابة دون الحاجة إلى إعادة التوجيه. - Asfand Qazi
لماذا لا تكون هذه الوظيفة الافتراضية؟!؟! - hopeseekr
hopeseekr قد يكون الخادم شقيًا ويستدعي الملف .باشرك إذا كنت لا تراقب بعناية. lists.gnu.org/archive/html/bug-wget/2012-04/msg00059.html - Patrick Conheady


يمكنك أيضا استخدام aria2c - يبدو أنها تعمل بشكل جيد مع رؤوس "ترتيب المحتوى".


2
2018-01-24 03:32





فقط fyi curl يعيد التوجيه بشكل جيد ، لذلك يجب استخدام ما يلي أعتقدعلى ما تبحث عنه.

حليقة -o molokai.vim http://www.vim.org/scripts/download_script.php؟src_id=9750


0
2018-06-23 12:39





عملت من خلال ما يلي:

حليقة -o molokai.vim http://www.vim.org/scripts/download_script.php؟src_id=9750

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

(تم تغيير الحالة إلى أصغر ، أي (wget -O) إلى (wget -o)


0
2018-02-15 06:44