ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Работает на Bash. В чем проблема ? :-D
Да, zsh
и bash
ведут себя по-разному в этом отношении.
В zsh
, когда вы говорите «ubuntuone-*
», он ищет в вашем текущем рабочем каталоге файлы, которые начинаются с ubuntuone-
- поскольку он не находит, он говорит «no matches
» и не запускается команда.
bash
берет другую тактику - он также ищет файлы, которые начинаются с ubuntuone-
в текущем рабочем каталоге, но если он не находит ничего, он говорит себе: «Возможно, вызываемая мной программа знает, как обрабатывать подстановочный знак «и так передает» ubuntuone-*
»в sudo apt-get
в качестве буквального аргумента.
Если у вас в текущем рабочем каталоге есть файл с именем ubuntuone-ffdjhjer
, то bash попытается выполнить sudo apt-get remove --purge ubuntuone-ffdjhjer
, что, вероятно, завершится ошибкой.
В zsh
(и в bash
) вы можете использовать одинарные кавычки, чтобы указывать не расширять подстановочный знак, а передавать его, как в:
sudo apt-get remove --purge 'ubuntuone-*'
Есть еще один способ предотвратить расширение в zsh, который я предпочитаю над кавычками:
sudo apt-get remove --purge ubuntuone-\*
Может быть, немного поздно, этот ответ, но есть способ это исправить. Из командной строки выполните:
unsetopt no_match