Les alias

Qu'est-ce qu'un alias, comment les crée et les utiliser.

Les alias

Les alias sont un moyen de créer de nouvelles commandes dans votre shell.
Cela peut être très utile lorsque l’on répète des commandes qui sont longues à écrire ou pour automatiser plusieurs actions.

Pour créer un alias, nous allons utiliser la commande alias qui est disponible dans tous les shells compatibles POSIX (sh, bash, zsh, …).

La commande s’utilise de la manière suivante:

alias affiche="echo"

On définit une nouvelle commande affiche qui va dans notre dos faire un appel à echo.
Voici ce que cela donne dans notre shell:

Ici, à la première ligne on constate que notre shell ne connaît pas la commande affiche. C’est normal, nous n’avons pas encore créé l’alias correspondant.
À la seconde ligne nous créons l’alias, c’est pourquoi à la troisième ligne notre shell est capable de comprendre et d’exécuter la commande affiche.

suppression d’un alias

Il est possible de supprimer notre alias avec la commande unalias affiche ou bien alias affiche=.

Jusqu’à maintenant nous avons défini des alias dans notre shell courant. Si nous ouvrons un autre shell nos alias auront disparu. Pour sauvegarder ces derniers nous pouvons les ajouter au fichier de configuration de notre shell (par exemple: .bashrc, .zshrc, …).
La syntaxe est identique que lorsque l’on déclare un alias dans notre shell. Voici un extrait d’un fichier ~/.bashrc:

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

Dans un shell, pour savoir quels sont les alias déjà défini on peut utiliser la commande alias. Voici ce qu’elle donne dans mon shell bash:

Quelques alias utiles

Nous l’avons évoqué, un des avantages des alias est de raccourcir des commandes longues que nous utilisons souvent.
Le meilleur moyen de retenir les alias est de définir les vôtre avec votre logique. Apprendre les alias de quelqu’un d’autre n’est pas utile car l’important est de retenir la commande derrière l’alias.

Voici une liste des alias que j’ai dans le fichier de configuration de mon shell pour vous donner des idées:

alias cls="clear"
alias ls="ls --color"
alias la="ls -lah"
alias ll="ls -lh"
alias grep="grep --color=auto"
alias cp="cp -i"
alias mv="mv -i"
alias e="vim"
alias k="kubectl"

alias gtfo="poweroff"
alias please="sudo"

alias ga="git add"
alias gcm="git commit"
alias gh="git push"
alias gl="git pull"
alias gs="git status"
alias gb="git branch"
alias gck="git checkout"
alias gdf="git diff"
alias gm="git merge"
alias gcl="git clone"
alias glg="git log --graph"
alias gfh="git fetch"
alias gsl="git shortlog -sn"
alias grb="git rebase"
alias gsh="git stash"
alias gblm="git blame"

alias dc="docker-compose"
alias dimg="docker image"
alias dctn="docker container"
alias dvlm="docker volume"
alias dsp="docker system prune"
alias dbld="docker build"

On pourrait aussi imaginer des alias plus compliqué comme:

alias gitfuu="git add . && git commit --amend --no-edit && git push --force"

On peut aussi réutiliser des alias précédemment créé dans la définition d’un nouvel alias, avec l’exemple ci-dessus (et les alias que j’ai dans mon fichier de configuration) on pourrait avoir:

alias gitfuu="ga . && gcm --amend --no-edit && gh -f"

Les alias dans Zsh

Ce que nous avons vu précédemment fonctionnne aussi dans zsh.
En plus de ces alias, zsh nous met à disposition d’autres types d’alias. Nous allons en voir ici deux.

Alias suffixe

Zsh nous permet l’exécution d’une commande en fonction de l’extension du fichier que nous tapons.
Par exemple, faire:

% main.go

Peut ouvrir le fichier main.go dans Vim.

Voici la commande pour définir un alias suffixe:

alias -s go=vim

Alias globaux

Ces alias prennent le dessus sur tout autre alias qui pourrait exister.

Imaginons que nous faisions souvent quelque chose comme suit:

cat file.txt | grep my_name

Nous pouvons créer un alias global comme cela:

alias -g g="| grep"

Et ensuite nous l’utiliseront de cette manière:

cat file.txt g my_name


4 commentaires

alias grep="grep --color=auto"
alias cp="cp -i"
alias mv="mv -i"

Une "astuce" assez utile à connaître quand on commence à définir des alias remplaçant la commande d’origine, c’est que l’on peut continuer à appeler cette dernière en la précédant d’un backslash. Par exemple, \mv exécute bien le mv présent dans le PATH et non pas l’alias défini plus haut.

+6 -0

Au chapitre des astuces, on peut utiliser le chemin complet… oui, c’est plus long, mais fonctionnera toujours avec une commande pas dans le PATH ou quand on en a plusieurs dans le PATH et que le bon n’est pas appelé :D (c’est du vécu au fait.)

Puisqu’on en parle, la première section devrait s’appeler « Que sont les alias » ou « Découvrons les alias » ou un truc du genre. Puis il aurait fallu ajouter (en deuxième ou en troisième section) une section « Lister et reconnaitre les alias » ou un truc du genre « Énumération et investigation des alias »
De la même façon que pour la première section, j’aurais vu un titre comme « Les alias du shell » …parce-que en cliquant j’ai bêtement pensé que ça allait parler de pseudonymes ; mais il y a plein d’autres suppositions. :)

P.S.

C’est bien les captures d’écran mais je peut-être que des blocs de code console auraient été mieux ?

+2 -0

Je devrais faire un billet sur les astuces shell méconnues …

Aussi, git possède son propre système d’alias. Les alias Git.

L’inconvénient, c’est de devoir taper git en entier avant. L’avantage, c’est de pas avoir de masquage. Pas exemple dans tes allias, tu masques gs et dc qui sont deux commandes Linux relativement courantes (bon dc je l’ai pas utilisée souvent …).

Aussi, un sujet aurait pu être la dualité fonction / alias.
Avec bash la différence est assez claire, avec zsh elle est plus floue (les alias sont des fonctions sans arguments) avec fish il n’y en a plus.

+3 -0

Ah oui, bien vu @ache pour Ghostscript et la calculatrice RPN (que j’utilise souvent) ; je n’avais pas parcouru la liste sinon j’aurais dit qu’il fallait une section git (ou peut-être juste une sous-section ?) :)
Si on rajoute une section sur la dualité fonction (pour laquelle ksh a quelques joyeusetés) et alias (il me semble que celles de csh peuvent recevoir des arguments…) je crois que ce billet pourrait devenir un article à quatre mains ? ;)

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte