Personnaliser Bash grâce aux alias
Personnaliser Bash

Personnaliser Bash grâce aux alias

Bien qu’il soit de base déjà très convivial et très riche, nous pouvons personnaliser Bash (Bourne Again Shell) de bien des manières différentes. L’une des possibilités qui nous est offerte, c’est la création d’alias. Comme vous vous en doutez, le principe est simple: on crée un nom de commande fictif qui permet d’en appeler une autre.

Pour créer un alias Bash nous met à disposition une commande intégrée: alias.

Afficher l’aide de la fonction alias

Etant donné que ce n’est ni un script, ni un exécutable mais bien une fonction interne de Bash, il n’y a pas de page man à son sujet, par contre nous pouvons en savoir plus avec la fonction help, elle aussi une fonction intégrée de Bash.

Afficher l’aide de la fonction alias
steve@just-sudo-it:~$ help alias
alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

    Options:
      -p        print all defined aliases in a reusable format

    Exit Status:
    alias returns true unless a NAME is supplied for which no alias has been
    defined.
steve@just-sudo-it:~$

Afficher la liste des alias actifs

Si vous souhaitez voir la liste des alias existants vous pouvez procéder comme suit:

Lister les alias
alias -p
Liste des alias existants
steve@just-sudo-it:~$ alias -p

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
steve@just-sudo-it:~$

Comme vous pouvez le voir, sur mon système je n’en ai pas encore beaucoup, en fait ce sont juste ceux qui sont de base avec Bash sur une machine Ubuntu.

Créer un nouvel alias

La création d’un nouvel alias est assez simple:

Créer un nouvel alias
alias nom='commande'

Notez qu’il faut impérativement qu’il n’y ait pas d’espace entre les différents termes, sans quoi Bash rejettera la commande.

Nous pouvons par exemple créer un alias pour la commande df qui intègre directement l’option -H pour afficher les taille de volume en unité habituelles (kilo, méga, giga, …).

Créer un alias de la commande df
alias df='df -H'

L’astuce ici est d’utiliser le nom de la commande comme nom d’alias. A chaque fois qu’on appellera df Bash exécutera df -H.

Création et utilisation de l’alias
steve@just-sudo-it:~$ alias df='df -H'
steve@just-sudo-it:~$ df
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              409M  1,2M  408M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   50G  8,0G   40G  17% /
tmpfs                              2,1G     0  2,1G   0% /dev/shm
tmpfs                              5,3M     0  5,3M   0% /run/lock
/dev/sda2                          2,1G  138M  1,8G   8% /boot
/dev/sda1                          1,2G  6,4M  1,2G   1% /boot/efi
tmpfs                              409M  4,1k  409M   1% /run/user/1000
steve@just-sudo-it:~$

En soi il n’y a pas vraiment de limite à ce que nous pouvons exécuter via un alias. Toute structure de commande Bash est valide, y compris les conditions, les substitutions, …

Supprimer un alias

La suppression d’un alias se fait par la fonction interne de Bash unalias.

Suppression d’un alias
unalias <alias>

Nous pouvons donc supprimer l’alias de la commande df créé ci-dessus.

Suppression de l’alias df
steve@just-sudo-it:~$ unalias df
steve@just-sudo-it:~$ df
Filesystem                        1K-blocks    Used Available Use% Mounted on
tmpfs                                398956    1132    397824   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  48268144 7809040  38228740  17% /
tmpfs                               1994768       0   1994768   0% /dev/shm
tmpfs                                  5120       0      5120   0% /run/lock
/dev/sda2                           1992552  133940   1737372   8% /boot
/dev/sda1                           1098628    6216   1092412   1% /boot/efi
tmpfs                                398952       4    398948   1% /run/user/1000
steve@just-sudo-it:~$

Vous remarquerez qu’après la suppression de l’alias, c’est de nouveau la commande df sans option qui s’exécute et donc avec des tailles de volumes en Kblocs.

Rendre les alias permanents

Les fonctions alias et unalias n’ont d’effet que durant la session. Si vous fermez la session et que vous la réouvrez, les modifications seront perdues. Pour rendre ces modifications permanentes il faut les automatiser au lancement de Bash.

A chaque fois que Bash est lancé, le contenu du fichier ~/.bashrc est exécuté, c’est donc de ce côté là qu’il faut chercher. Vous pouvez tout simplement rajouter les commandes alias les unes après les autres à la fin de votre .bashrc, mais ce n’est pas la plus belle manière de procéder.

Bien que votre .bashrc contienne probablement déjà quelques alias, il vaut mieux faire vos modifications dans un fichier séparé. Normalement, toujours dans votre .bashrc, vous devriez trouver les lignes ci-dessous:

Extrait de ~/.bashrc
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Ces quelques lignes signifient simplement que si il existe un fichier ~/.bash_aliases, alors il faut l’exécuter. Comprenez par là que c’est dans ce fichier qu’il convient de placer nos alias.

Dans le cas où ces lignes n’existeraient pas dans votre .bashrc, il vous suffit de les rajouter à la fin du fichier.

Il ne nous reste plus donc qu’à éditer ou créer le fichier ~/.bash_aliases et y créer nos alias (ou supprimer des alias dont nous ne voudrions pas).

Création et/ou édition de ~/.bash_aliases
vim ~/.bash_aliases

Rajoutons-y quelques alias pour personnaliser Bash.

fichier ~/.bash_aliases
# Système de fichier
alias df='df -H'
alias du='du -h'

# Gestion du système
alias upd='sudo apt update'
alias upg='sudo apt upgrade -y'

Les lignes commençant par # sont de simples commentaires et ne sont donc pas exécutés par Bash. Notez également que pour l’exemple j’utilise un système Ubuntu Server 22.04. Les alias upd et upg ne fonctionneront pas sur des systèmes ne disposants pas de apt.

Maintenant que les modifications sont faites, il faut les appliquer. Vu que ce fichier sera exécuté au lancement de bash, vous pouvez bien sût fermer votre session et en ouvrir une nouvelle. Ou alors, vous demandez simplement à Bash d’interpréter à nouveau .bashrc dans la session courante.

Interpréter le contenu de .bashrc et ce qu’il appelle.
source ~/.bashrc

Et voici donc le résultat….

Chargement de .bashrc et test de l’alias upd
steve@just-sudo-it:~$ source ~/.bashrc
steve@just-sudo-it:~$
steve@just-sudo-it:~$ upd
[sudo] password for steve:
Atteint :1 http://be.archive.ubuntu.com/ubuntu jammy InRelease
Réception de :2 http://be.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Réception de :3 http://be.archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
Réception de :4 http://be.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Réception de :5 http://be.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [866 kB]
Réception de :6 http://be.archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [211 kB]
Réception de :7 http://be.archive.ubuntu.com/ubuntu jammy-updates/main amd64 c-n-f Metadata [15,6 kB]
Réception de :8 http://be.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [674 kB]
Réception de :9 http://be.archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [108 kB]
Réception de :10 http://be.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [965 kB]
Réception de :11 http://be.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages [657 kB]
Réception de :12 http://be.archive.ubuntu.com/ubuntu jammy-security/main Translation-en [153 kB]
Réception de :13 http://be.archive.ubuntu.com/ubuntu jammy-security/main amd64 c-n-f Metadata [11,2 kB]
Réception de :14 http://be.archive.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [662 kB]
Réception de :15 http://be.archive.ubuntu.com/ubuntu jammy-security/restricted Translation-en [105 kB]
4 767 ko réceptionnés en 2s (2 324 ko/s)
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait
1 paquet peut être mis à jour. Exécutez « apt list --upgradable » pour le voir.
steve@just-sudo-it:~$

Quelques alias qui peuvent changer votre vie dans Bash

Voici le contenu d’un fichier ~/.bash_aliases contenant une série d’alias bien pratiques pour personnaliser Bash.

~/.bash_aliases
# Terminal
alias c='clear'                                         # Effacer le terminal

# Session
alias root='sudo -i'                                    # Passer en root avec la commande sudo
alias su='sudo -i'                                      # idem ... pour éviter une mauvaise utilisation de su

# System
alias lsusers='getent passwd | column -s ":" -t'        # Afficher les utilisateurs sous forme de tableau
alias lsgroups='getent group | column -s ":" -t'        # Afficher les groupes sous forme de tableau

# Navigation
alias ..='cd ..'                                        # Remonter au répertoire parent
alias ...='cd../..'                                     # Remonter de deux niveaux
alias ....='cd../../..'                                 # Remonter de trois niveaux

# Networking
alias ssu='sudo ss -pnlu'                               # Afficher les applications à l'écoute en UDP
alias sst='sudo ss -pnlt'                               # Afficher les applications à l'écoute en TCP

# Fichiers et stockage
alias df='df -H'                                        # df avec des unités classiques
alias du='du -h'                                        # du avec des unités classiques
alias mnt='mount | column -t'                           # Afficher les points de montage sous forme de tableau
alias cp='cp -i'                                        # cp avec demande de confirmation
alias mv='mv -i'                                        # mv avec demande de confirmation
alias rm='rm -i'                                        # rm avec demande de confirmation

# Divers
alias now='date +"%T"'                                  # Afficher l'heure
alias today='date +"%A %d/%m/%Y"'                       # Afficher la date du jour

0 Comments on “Personnaliser Bash grâce aux alias

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.