Mon café du matin n'était pas encore arrivé à mon cerveau quand j'ai oublié les citations dans:
alias grep="grep --color=always"
alors j'ai plutôt tapé:
alias grep=grep --color=always
me laissant avec:
--color=always
grep=grep
dans mes alias.
Lorsque j'essaie de nettoyer la - couleur = toujours en utilisant unalias --color
je reçois:
bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]
J'ai essayé de m'échapper, de citer et de supplier, mais je n'arrive pas à comprendre comment faire en sorte que le commando unalias nettoie le gâchis.
(Je sais qu'un redémarrage fera l'affaire mais il doit sûrement y avoir un autre moyen)
bash
bash-alias
Demander
la source
la source
echo > \\?\c:\windows\x.
, ou ce moment-làrm -rf * ~
par accident.Réponses:
Vous pouvez éviter que les systèmes compatibles POSIX interprètent les tirets dans les commandes en ajoutant
--
avant tout argument.Cela fonctionne aussi avec d'autres utilitaires, disons que vous avez un fichier nommé
-bla
. Si vous essayez de le supprimer,rm
vous obtiendrez l'erreur suivante:En utilisant
--
avant le nom du fichier, vous supprimerez le fichier:la source
ls ./-bla
etrm ./-bla
(ou spécifier les chemins complets, ce qui est plus facile dans votre cas). Évidemment, cela ne fonctionne pas pour les alias!Utilisez simplement le même truc que vous avez utilisé pour définir l'alias
la source
unalias unalias --color
Solution rapide
Pour résoudre les deux les mauvais alias vous pouvez simplement exécuter
Comprendre ce qui s'est passé
Vous donnez la mauvaise commande
alias grep=grep --color=always
sans"..."
.Vous définissez deux alias
--color
etgrep
; En effet, vous pouvez le lire à gauche de votre sortie (tout à gauche de la=
commande est un alias):vous devez donc désactiver les deux.
Pourquoi est-ce arrivé?
Dans
...
le synoptique d’alias, il est possible de faire plusieurs assignations sur une seule ligne:Dans la sortie de
help alias
vous pouvez lire le synoptique mais deman bash
vous pouvez lire cela est possible dans la même ligne même pour lister et assigner en même temps:Vous avez des problèmes pour supprimer le premier
--color
seul .Car il est interprété comme des options pour
alias
votre shell; Pour éviter cela, vous devez informer votrebash
shell que ce qui suit n’est pas une option.Le Saint Graal de Linux:,
man
dans ce cas,man bash
c’est un coffre rempli de trésors utiles dans une situation comme celle-ci.Vous pouvez lire de
man bash
:Comme indiqué dans une autre réponse, la méthode POSIX consiste à utiliser la combinaison de caractères spéciaux
--
.Mais pourquoi
unalias grep --color
travaille-t-il? Je veux dire sans utiliser--
?Comme cela a fonctionné
alias
même pour,unalias
il est possible de donner plus d’un nom à la fois (encore le[...]
).Je ne peux que donner ma supposition: une bonne habitude de programmation consiste à écrire les routines de lecture et d’écriture en même temps, en-deçà de la même logique. Il faut donc que ce soit pour les options d’analyse des routines de
alias
etunalias
.Que cela fonctionne, vous pouvez voir même dans cette commande (à partir d'un shell ouvert à cet effet) que tous vos alias ne seront pas effacés:
Remarque finale
Dans la section BUGS des
man bash
quelques articles rapportés, vous pouvez lire:-)
la source