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.
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:
alias -p
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:
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, …).
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
.
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
.
unalias <alias>
Nous pouvons donc supprimer l’alias de la commande df
créé ci-dessus.
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:
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).
vim ~/.bash_aliases
Rajoutons-y quelques alias pour personnaliser Bash.
# 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.
source ~/.bashrc
Et voici donc le résultat….
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.
# 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”