Comment savoir où un alias est défini sur mon système? Je fais référence au type d'alias utilisé dans une session Terminal ouverte à partir de Mac OS X (10.6.3).
Par exemple, si je saisis la commande alias
sans paramètres à l'invite de commande de terminal, je reçois une liste d'alias que j'ai définis, par exemple:
alias mysql='/usr/local/mysql/bin/mysql'
Cependant, j'ai effectué des recherches sur l'ensemble de mon système à l'aide de Spotlight et de mdfind
dans divers fichiers de démarrage, mais je ne peux pas trouver où cet alias a été défini. (Je l'ai fait il y a longtemps et je n'ai pas noté où j'avais attribué l'alias).
Pour OSX, cette séquence en deux étapes a bien fonctionné pour moi, car elle a permis de localiser un alias que j'avais créé il y a longtemps et que je ne pouvais pas localiser à l'emplacement prévu (~/.zshrc).
cweekly:~ $ which la
la: aliased to ls -lAh
cweekly:~$ grep -r ' ls -lAh' ~
/Users/cweekly//.oh-my-zsh/lib/aliases.zsh:alias la='ls -lAh'
Aha! "Cacher" dans ~/.oh-my-zsh/lib/aliases.zsh
. J'avais fouillé un peu dans .oh-my-zsh mais j'avais négligé lib/aliases.zsh.
vous pouvez simplement taper alias
sur la commande Invite pour voir quels alias vous avez. Sinon, vous pouvez faire une find
sur les endroits les plus communs où les alias sont définis, par exemple
grep -RHi "alias" /etc /root
Aussi à l'avenir ce sont les fichiers de configuration bash standard
Plus d'infos: http://www.heimhardt.com/htdocs/bashrcs.html
Un peu tard pour le parti, mais je rencontrais le même problème (essayer de trouver où la commande "l." Était aliasée dans RHEL6) et aboutissait dans un endroit non mentionné dans les réponses précédentes. Il ne se trouve peut-être pas dans toutes les implémentations de bash, mais si le répertoire /etc/profile.d/ existe, essayez de rechercher des alias inexpliqués ici. C'est là que j'ai trouvé:
[user@server ~]$ grep l\\. /etc/profile.d/*
/etc/profile.d/colorls.csh:alias l. 'ls -d .*'
/etc/profile.d/colorls.csh:alias l. 'ls -d .* --color=auto'
/etc/profile.d/colorls.sh: alias l.='ls -d .*' 2>/dev/null
/etc/profile.d/colorls.sh:alias l.='ls -d .* --color=auto' 2>/dev/null
Le répertoire n'est pas mentionné dans la page de manuel bash et ne fait pas vraiment partie des endroits où bash recherche les informations de profil/démarrage, mais dans le cas de RHEL, vous pouvez voir le code d'appel dans/etc/profile:
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
Pour des configurations plus complexes (par exemple, lorsque vous utilisez un framework de script Shell comme bash-it, oh-my-zsh ou autres), il est souvent utile d’ajouter «alias mysql» à des emplacements clés dans vos scripts. Cela vous aidera à savoir exactement quand l’alias est ajouté.
par exemple.:
echo "before sourcing .bash-it:"
alias mysql
. $HOME/.bash-it/bash-it.sh
echo "after sourcing bash:"
alias mysql
J'ai trouvé la réponse (j'avais regardé le bon fichier mais j'avais manqué l'évidence).
Les alias dans mon cas sont définis dans le fichier ~/.bash_profile
D'une certaine manière, cela m'a échappé.
Je pense que cela ressemble peut-être à ce que ghostdog74 voulait dire, mais leur commandement ne fonctionnait pas pour moi.
Je voudrais essayer quelque chose comme ça:
for i in `find . -type f`; do # find all files in/under current dir
echo "========"
echo $i # print file name
cat $i | grep "alias" # find if it has alias and if it does print the line containing it
done
Si vous voulez être vraiment chic, vous pouvez même ajouter un if [[ grep -c "alias" ]] then <print file name>