ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Fonctionne sur Bash. Quel est le problème ? :-RÉ
Oui, zsh
et bash
agissons différemment à cet égard.
Dans zsh
, lorsque vous dites " ubuntuone-*
" il recherche dans votre répertoire de travail actuel les fichiers commençant par ubuntuone-
- puisqu'il n'en trouve aucun, il indique " no matches
" et n'exécute pas la commande.
bash
adopte une approche différente - il recherche également les fichiers qui commencent par ubuntuone-
dans le répertoire de travail actuel, mais s'il n'en trouve aucun, il se dit: "Peut-être que le programme que j'invoque sait comment gérer le caractère générique", et passe donc " ubuntuone-*
"off sudo apt-get
comme argument littéral.
Si vous aviez un fichier dans votre répertoire de travail actuel appelé ubuntuone-ffdjhjer
, bash essaierait de s'exécuter sudo apt-get remove --purge ubuntuone-ffdjhjer
, ce qui échouerait probablement.
Dans zsh
(et dans bash
), vous pouvez utiliser des guillemets simples pour lui dire de ne pas développer le caractère générique mais de le transmettre, comme dans:
sudo apt-get remove --purge 'ubuntuone-*'
dpkg -l 'linux*'
bash pour voir tous les noyaux installés.Peut-être un peu tard cette réponse, mais il existe un moyen de résoudre ce problème. Depuis la ligne de commande, exécutez:
la source
shopt -s failglob
dansbash
la solutionbash
de sorte qu'il se comporte commezsh
et d' autres coquilles modernes commefish
outcsh
qui ont fixé que disfonctionnement de la Bourne shell dans lequel une commande peut encore être exécuté même si les petites boules ne correspondent pas.Il existe un autre moyen d'empêcher l'expansion dans zsh, que je préfère aux guillemets:
la source