ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Działa na Bash. Jaki jest problem ? :-RE
ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Działa na Bash. Jaki jest problem ? :-RE
Odpowiedzi:
Tak, zsh i bashzachowuj się inaczej w tym zakresie.
W zsh, kiedy mówisz „ ubuntuone-*” wygląda w bieżącym katalogu roboczym dla plików, które zaczynają sięubuntuone- - ponieważ nie znajdziesz, to mówi „ no matches” i nie uruchomić komendę.
bashma inną przyczepność - szuka również plików, które zaczynają się ubuntuone-w bieżącym katalogu roboczym, ale jeśli go nie znajdzie, mówi do siebie: „Może program, który wywołuję, wie, jak obsługiwać znak wieloznaczny”, a więc przekazuje ” ubuntuone-*„ sudo apt-getjako dosłowny argument.
Jeśli masz plik w bieżącym katalogu roboczym o nazwie ubuntuone-ffdjhjer, bash spróbuje wykonać sudo apt-get remove --purge ubuntuone-ffdjhjer, co prawdopodobnie się nie powiedzie.
W zsh(i w bash) możesz użyć pojedynczych cudzysłowów, aby powiedzieć mu, aby nie rozwijał symbolu wieloznacznego, ale przekazał go, jak w:
sudo apt-get remove --purge 'ubuntuone-*'
dpkg -l 'linux*'bash, aby zobaczyć wszystkie zainstalowane jądra.
Być może trochę spóźni się ta odpowiedź, ale istnieje sposób, aby to naprawić. Z wiersza poleceń wykonaj:
unsetopt no_match
shopt -s failglobw bashcelu poprawki bash , dlatego zachowuje się jak zshi inne nowoczesne pociski podoba fishlub tcsh które zostały ustalone, że misfeature z Bourne shell czym komenda może nadal działać, nawet jeśli globs nie pasuje.