ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Funziona su Bash. Qual è il problema ? :-D
ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Funziona su Bash. Qual è il problema ? :-D
Risposte:
Sì, zsh
e bash
comportati diversamente in questo senso.
In zsh
, quando dici " ubuntuone-*
" cerca nella directory di lavoro corrente i file che iniziano con ubuntuone-
- poiché non ne trova nessuno, dice " no matches
" e non esegue il comando.
bash
prende una virata diversa: cerca anche i file che iniziano con ubuntuone-
l'attuale directory di lavoro, ma se non ne trova nessuno dice a se stesso: "Forse il programma che sto invocando sa come gestire il carattere jolly" e quindi passa " ubuntuone-*
"via sudo apt-get
come argomento letterale.
Se avessi un file nella directory di lavoro corrente chiamato ubuntuone-ffdjhjer
, allora bash proverà ad eseguire sudo apt-get remove --purge ubuntuone-ffdjhjer
, il che probabilmente fallirebbe.
In zsh
(e in bash
) puoi usare virgolette singole per dirgli di non espandere il carattere jolly ma di trasmetterlo, come in:
sudo apt-get remove --purge 'ubuntuone-*'
dpkg -l 'linux*'
bash per vedere tutti i kernel installati.
Potrebbe essere un po 'in ritardo questa risposta, ma c'è un modo per risolvere questo problema. Dalla riga di comando eseguire:
unsetopt no_match
shopt -s failglob
in bash
a fix bash
così si comporta come zsh
e altre shell moderni come fish
o tcsh
che sono fissate che misfeature della Bourne shell per cui un comando può ancora essere eseguito anche se le gocce non corrisponde.