ЗШ:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Работает на Bash. В чем проблема ? :-D
ЗШ:
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-*'
dpkg -l 'linux*'
набираю bash, чтобы увидеть все установленные ядра.
Может быть, немного поздно, этот ответ, но есть способ это исправить. Из командной строки выполните:
unsetopt no_match
shopt -s failglob
в , bash
чтобы исправить bash
так он ведет себя , как zsh
и другие современные снаряды любят fish
или tcsh
что зафиксировал , что ошибочная особенность оболочки Борна в результате чего команда все еще может быть запущена , даже если шарики не совпадает.