ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Працює на Баша. В чому проблема ? :-D
ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Працює на Баша. В чому проблема ? :-D
Відповіді:
Так, zsh
і bash
поводяться по-різному в цьому плані.
В zsh
, коли ви говорите , « ubuntuone-*
» це виглядає в поточній робочій директорії для файлів , які починаються з ubuntuone-
- , так як не знайти, він говорить : « no matches
» і не виконує команду.
bash
приймає інший хід - він також шукає файли, які починаються з ubuntuone-
поточного робочого каталогу, але якщо він не знайде жодного, він каже собі: "Можливо, програма, на яку я посилаюсь, знає, як поводитись з підстановкою" і так передає " ubuntuone-*
"off 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
що зафіксував , що помилкова особливість оболонки Борна в результаті чого команда все ще може бути запущена , навіть якщо кульки не збігається.