web-dev-qa-db-fra.com

Comment vérifier si alias ne remplace pas une commande réelle?

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).

5
DK Bose

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
10
souravc

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.

3
Tay Ray Chuan

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.

1
John1024