Question Comment voir la commande attachée à un alias bash?


Supposons que je dispose d'un alias dans le shell bash. Existe-t-il une commande simple pour imprimer quelle commande l'alias va exécuter?


258
2018-02-07 03:24


origine




Réponses:


le type Builtin est utile pour cela. Il vous informera 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;
        echo "$REPLY";
        grep --color=auto "$@"
    }
}

342
2018-02-12 09:52



Que faire lorsqu'un alias contient plusieurs alias? - user251046
@ user251046 continue à utiliser type jusqu'à ce que vous frappiez autre chose qu'un alias ... - geirha
J'aime cette réponse parce que type va analyser / interpréter les guillemets, de sorte que vous pouvez vous assurer que les citations sont correctes. - wisbucky


Il suffit de taper alias à l'invite Shell. Il devrait afficher une liste de tous les alias actuellement actifs.

Ou, vous pouvez taper alias [command] pour voir à quoi alias un alias spécifique, par exemple, si vous voulez savoir ce que le ls alias alias, vous pourriez faire alias ls.


127
2018-02-07 03:30



Ou tapez alias ls pour savoir quoi en particulier ls est alias à. - poolie
@poolie En effet. Je pense que la question était de voir tout les alias, cependant, ce qui explique pourquoi je n'ai pas développé plus en détail la commande alias. - Thomas Ward♦
Bien que cela fonctionne pour les alias, cela ne fonctionne pas si vous avez défini une fonction de shell personnalisée. type Cependant, fonctionne dans les deux cas. - Sujay Phadke


J'aime vraiment Ctrl+Alt+E comme j'ai appris de cette réponse. Il "élargit" la ligne de commande actuellement saisie, ce qui signifie qu'il effectue une expansion d'alias (entre autres choses).

Qu'est-ce que ça veut dire? Il transforme tous les alias, qui peuvent être actuellement écrits sur la ligne de commande, en alias.

Par exemple, si je tape:

$ ls

puis appuyez sur Ctrl+Alt+E, il est transformé en

$ ls --time-style=locale --color=auto

51
2018-02-13 17:52



a-t-il un équivalent sur d'autres distributions? - sepehr
@sepehr Fonctionne sur Debian, je suppose que c'est une fonctionnalité bash et devrait fonctionner sur n'importe quelle distribution. - Der Hochstapler
tu as raison, ça marche sur bash mais j'ai zsh et ça ne marche pas malheureusement. - sepehr
était vraiment utile. J'avais un objectif différent de développer l'une des commandes précédentes de bash connectées dans l'historique, c'est-à-dire!! 394, afin de pouvoir le modifier avant de l'exécuter. - XXL
Comment faire cela sur bash OSX? - Govind Rai


Strictement parlant, la réponse correcte utilise le tableau BASH_ALIASES, par exemple:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

6
2018-01-13 12:12



J'ai trouvé cela utile dans une situation où je souhaitais qu'un accès par programmation à l'instruction réelle soit mis en alias sans les éléments utiles pour l'homme. - M. Justin
Très utile, merci! - Noldorin
cela ne fonctionne pas dans zsh - ProGrammar
@ProGrammar la question portait sur bash - pour zsh, vous devriez regarder les questions sur zsh - noonex


Vous pouvez utiliser le which commander.

Si vous définissez un alias pour ls comme ls -al puis tapez which ls, tu verras:

ls: aliased to ls -al.


1
2017-08-05 07:36



bash n'a pas which commander. - geirha
Ne travaille pas pour moi .. - Chiel ten Brinke
Ça marche pour moi. Merci - Indrajeet Gour
which est un mauvais moyen de rechercher des alias comme expliqué ici: unix.stackexchange.com/questions/10525/…   Cela ne marche même pas pour moi pour les alias en bash sur Ubuntu. - Sujay Phadke