Alias en bash
Certaines commandes bash sont entrées très souvent et sont soulantes à écrire ici entre en jeux les alias.
Syntaxe de base
C'est finalement assez simple :
alias nom='la commande complete'
Par exemple le classique ll par défaut sur red-hat mais pas sous debian.
alias ll='ls -al'
Gestion complete
Il existe plusieurs commandes et options de commandes pour gérer les alias. Il ne suffit pas de les créer.
Création
On vient de le voir :
alias nom='la commande complete'
Liste
AU bout d'un moment on commence à avoir une multitude d'alias (ceux crées par le système, ceux du compte, ceux d'un environnement donné....) el on voudrait y voir plus clair.
alias
nous donne la liste:
alias activate='source .venv/bin/activate'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias ll='ls -ail'
alias ls='ls --color=auto'
alias ltr='ls -ltr'
Y'a les miens et ceux du système. La liste est par ordre alphabétique des noms d'alias. Ici c'est pas très utiles mais si on commence a en avoir beaucoup c'est facile pour retrouver le sien. Ou alors on utilise la syntaxe ci-dessous.
Détail d'un alias
Par exemple vous trouvez que les ls sur une machine sont vachement plus stylés que les votres.
alias ls
vous réponds:
alias ls='ls --color=auto'
C'est comme ça que les ls sont plus jolis. A vous de le reprendre chez vous.
Bypasser un alias
C'est bien beau tous ces alias mais moi je voudrais un ls brut sans ces couleurs moches... oui quelquefois j'aime pas les couleurs... ou mon terminal gère super mal les code de contrôles ANSI.
\ls
nous lancera la commande ls "toute nue"
Supprimer un alias
Si on en a définitivement mare de ce ls "en couleur" ou de ce rm "prudent" on peut les virer.
unalias ls # on revient au ls "tout nu"
unalias -a # ATTENTION Carnage ca détruit TOUS vos alias
Configuration
On peut entrer les alias "à la main" mais ils ne resteront valides que pendant la session. Un logout + login les rétablira par défaut. Comment se fait-ce?
Pour configurer le bash, il y a des fichiers de configuration que les distributions mettent en place.
Sur ce que je connais (Debian et Ubuntu) il y a deux fichiers
Niveau systeme
Le fichier /etc/bash.bashrc est lancé à chaque login d'un utilisateur en bash.
Il contient beaucoup de choses comme le joli prompt en couleurs et qui raconte plein de choses mais il peut aussi y avoir des alias. Dans le cas de ma Debian pour Raspberry PI il n'y a pas d'alias!
Niveau user
Le fichier est alors $HOME/.bashrc il est lancé également au login mais est spécifique de chaque utilisateur.
Dans le mien la partie alias est assez subtile!
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
il ne fait les alias "colorés" que si le programme /usr/bin/dircolors est là. il donne des couleurs pour chaque type de fichiers avec un sombre mécanisme de ~/.dircolors.
Mais on voit deux trucs plus simples :
- Les alias "à la redhat" sont déjà la il suffit de les décommenter.
- Si vous créez un fichier $HOME/.bash_aliases il sera "sourcé". On peut créer des alias sans "casser" le .bashrc. On peut aussi filer ses alias à un ami sans lui file toute sa config et lui envoyant ce fichier.