Comment savoir si un alias que je crée (dans .bash_aliases
) ne remplace pas une commande réelle par le même nom? Je ne veux pas faire de telles choses par accident.
(J'ai regardé dans "Des questions qui peuvent déjà avoir votre réponse" et "Des questions similaires" mais je n'ai pas vu d'allumettes)
Je demande parce que j'estime qu'il n'y a pas d'avertissement donné par le système (Ubuntu 13.10).
Vous pouvez utiliser type
in terminal pour cela.
Supposons que vous ayez une commande rm
comme alias rm -i
. Si vous vérifiez,
type rm
tu auras,
rm is aliased to `rm -i'
Si vous n'avez pas d'alias pour rm
vous obtiendrez,
rm is /bin/rm
Warning: cette méthode nécessite que vous exécutiez la commande, contrairement aux autres réponses qui "rendent compte" de l'état du shell. Vous ne pouvez jamais être sûr jusqu'au moment de l'exécution, n'est-ce pas?
Dans votre shell, tapez
set -x
Vous verrez les lignes + ...
pendant l'exécution du shell. Par exemple, lorsque je lance ls
, qui est généralement associé à ls --color=auto
sur Ubuntu, je reçois ceci:
$ ls ~
+ ls --color=auto /home/rctay
bin ext foo.py Music shared tmp-www tmux-client-32280.log
...
Pour l'éteindre, exécutez set +x
.
Avant de définir l'alias pour une commande, appelez-le fn
, exécutez type
sur le nom de la commande:
type fn
S'il n'y a pas de commande de ce nom, type
renverra not found
.
Après avoir défini un alias, vous pouvez utiliser locate
pour rechercher d'éventuels conflits:
locate '*bin/fn'
Ceci recherche n'importe où sur le système une commande nommée fn
dans un répertoire dont le nom indiquerait qu'il s'agit d'un exécutable. Notez que ce n'est pas la même chose que type
parce que locate
va chercher dans les répertoires bin
qui peuvent ne pas se trouver sur votre chemin par défaut.