Supposons que j'ai un alias dans le shell bash. Existe-t-il une simple commande permettant d’imprimer quelle commande l’alias sera exécuté?
La variable type
est utile pour cela. Il vous renseignera non seulement sur les alias, mais également sur les fonctions, les commandes intégrées, les mots-clés et les commandes externes.
$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a Shell builtin
$ type psgrep
psgrep is a function
psgrep ()
{
ps -ef | {
read -r;
printf '%s\n' "$REPLY";
grep --color=auto "$@"
}
}
type -a cmd
montrera toutes les commandes de ce nom par ordre de priorité, ce qui est utile pour l'alias ls
ci-dessus, où l'alias lui-même appelle ls
.
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
Cela vous indique que lorsque vous exécutez ls
, /bin/ls
sera utilisé et --color=auto
sera inclus dans sa liste d'arguments, en plus des autres que vous ajoutez vous-même.
Il suffit de taper alias
à l'invite du shell. Il devrait générer une liste de tous les alias actuellement actifs.
Ou, vous pouvez taper alias [command]
pour voir à quel alias spécifique est aliasé, par exemple, si vous voulez savoir à quoi alias ls
, vous pouvez faire alias ls
.
J'aime vraiment Ctrl+Alt+E comme je l'ai appris de cette réponse . Il "développe" la ligne de commande actuellement typée, ce qui signifie qu'il effectue le développement d'alias (entre autres).
Qu'est-ce que ça veut dire? Il transforme n'importe quel alias, qui pourrait être actuellement écrit sur la ligne de commande, en ce que cet alias signifie.
Par exemple, si je tape:
$ ls
puis appuyez sur Ctrl+Alt+E, il est transformé en
$ ls --time-style=locale --color=auto
La bonne réponse, à proprement parler, utilise le tableau BASH_ALIASES, par exemple:
$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars
Vous pouvez utiliser la commande which
.
Si vous définissez un alias pour ls
comme ls -al
et que vous tapez ensuite which ls
, vous verrez:
ls: aliased to ls -al
.