سؤال كيف يمكنني تعطيل globbing لوسيطة عنوان URL في Zsh؟ [مكرر]


هذا السؤال لديه بالفعل إجابة هنا:

أردت فقط تنزيل فيديو YouTube باستخدام youtube-dl، ومع ذلك، zsh يفسر علامة الاستفهام ? (الذي يفصل جزء الاستعلام من URL) كمعامل أحرف البدل globbing (الذي يتطابق مع أي حرف مفرد) وبالتالي فإنه يقطع الأمر مع رسالة الخطأ التالية:

$ youtube-dl https://www.youtube.com/watch?v=eDSESarTQXk
zsh: no matches found: https://www.youtube.com/watch?v=eDSESarTQXk

هل هناك طريقة لجعل zsh التعرّف على عناوين URL ، ربما باستخدام تعبير عادي ، حتى لا تحاول البحث عنها؟


2
2017-10-04 18:18


الأصل


FWIW ، هذه المسألة ليست محددة ل Zsh أو فيديو معين عن تقنيات التدليك. يتم حل المشكلة الأساسية من خلال وضع عنوان URL في علامات اقتباس. نفس المشكلة موجودة في Bash و Ksh و Sh وغيرها. - JakeGould
@ JakeGould: لا أذكر أن علي فعل ذلك عندما استخدمت oh-my-zshومع ذلك ، لا يمكنني العثور على الإعداد المحدد وكنت على أمل أن يعرفه شخص ما على رأسه. ربما قاموا فقط بتعطيل ? globbing عامل بطاقة بدل؟ - Lenar Hoyt
"ربما قاموا فقط بتعطيل ? مشغلات حرف البدل globbing؟ " هذه هي حالة استخدام مطرقة ثقيلة عندما تعمل دفعة خفيفة. لا تغير أبدًا سلوكًا أساسيًا كهذا للاستخدام في حالة واحدة. - JakeGould


الأجوبة:


يمكنك تعطيل NOMATCH"خيار من zsh:

setopt NO_NOMATCH

بينما ال NOMATCH يتم تمكين الخيار (وهو الافتراضي) zsh طباعة رسالة خطأ إذا كان هناك نمط لا يطابق اسم الملف. عن طريق تعطيل NOMATCH، يتم الاحتفاظ الأنماط التي لا تطابق اسم ملف دون تغيير في قائمة الوسائط.

لاحظ أن اسم الخيار هو حقا NOMATCH، لذلك عليك استخدام NO_NOMATCH لتعطيله ، الإعداد MATCH لا يعمل.

انتباه: يؤثر هذا على كل جوانب الجذب ، وليس فقط على عناوين URL. لذلك إذا كنت تعتمد في أي شكل من الأشكال zsh أخطاء الإعادة عندما لا تتطابق الأنماط ، هذه ليست طريقة للذهاب. (للأسف ، على عكس مع NULL_GLOB لا يوجد مؤهل للعبة يتيح التمكين / التعطيل NOMATCH لكل حالة.)


3
2017-10-05 11:26



+1 لشرح عواقب NOMATCH، على الرغم من أنني أعتقد أنه كان يجب نشر إجابتك على السؤال المكرر. وملاحظة واحدة: يمكنك على الأقل تعطيل NOMATCH سلوك مؤقت مع noglob الأمر ، على سبيل المثال noglob youtube-dl url?foo=bar - mpy
ا كثير أفضل حل هو اقتباس عناوين URL تلقائيًا: superuser.com/a/1237124/93988 - Lenar Hoyt


يمكنك وضع عنوان URL بين علامتي اقتباس ، ويعمل.

$ youtube-dl 'https://www.youtube.com/watch?v=eDSESarTQXk'
[youtube] eDSESarTQXk: Downloading webpage
[youtube] eDSESarTQXk: Downloading video info webpage
[youtube] eDSESarTQXk: Extracting video information
...

1
2017-10-04 18:23



يمكن للمرء أيضًا ببساطة اقتباس عناوين URL الملصقة تلقائيًا: superuser.com/a/1237124/93988 - Lenar Hoyt