2

Я просто хотел скачать видео с YouTube, используя youtube-dl , однако zsh интерпретирует вопросительный знак ? (который отделяет часть запроса от URL) в качестве оператора с подстановочными знаками подстановки (который соответствует любому отдельному символу) и, таким образом, прерывает команду со следующим сообщением об ошибке:

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

Есть ли способ заставить zsh распознавать URL-адреса, возможно, с помощью регулярного выражения, чтобы он не пытался их глобализировать?

2 ответа2

3

Вы можете отключить NOMATCH " zsh:

setopt NO_NOMATCH

Пока включена опция NOMATCH (которая используется по умолчанию), zsh печатает сообщение об ошибке, если шаблон не соответствует имени файла. NOMATCH , шаблоны, которые не соответствуют имени файла, остаются неизменными в списке аргументов.

Обратите внимание, что имя параметра действительно NOMATCH , поэтому вы должны использовать NO_NOMATCH чтобы отключить его, установка MATCH не работает.

Внимание: это влияет на всю глобализацию, а не только на URL. Так что, если вы полагаетесь каким-либо образом на zsh, возвращая ошибки, когда шаблоны не совпадают, это не тот путь. (К сожалению, в отличие от NULL_GLOB нет спецификатора глобуса, который бы позволял включать / отключать NOMATCH каждого случая.)

1

Вы можете поместить 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
...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .