Table des matières

,

Créer un alias

Les alias sont des substitutions abrégées de commandes répétitives et/ou longues à taper dans la console.

Il est possible de définir vos alias dans deux fichiers cachés qui se trouvent dans votre Dossier Personnel:

Il est également possible de créer un alias provisoire tel qu'expliqué ici

Pour éviter de modifier trop souvent le fichier sensible qu'est .bashrc, il est conseillé d'utiliser le fichier .bash_aliases. Pour que celui-ci soit pris en compte, modifiez le fichier ~/.bashrc après l'avoir sauvegardé pour décommenter1), si ce n'est déjà le cas, les lignes suivantes:
~/.bashrc
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Forme d'un alias

Qu'il soit dans le fichier ~/.bashrc ou ~/.bash_aliases, un alias aura toujours la forme suivante

~/.bash_aliases
alias nom_de_votre_alias='commande de votre alias'
Il ne peut y avoir d'espace entre le nom de l'alias, le signe "=" et le reste

Lorsque vous saisirez nom_de_votre_alias dans un terminal, ce sera réellement la commande de votre alias qui sera exécutée.

Il est également possible d'utiliser des guillemets doubles comme ceci :

alias nom_de_votre_alias="commande de votre alias"

Attention dans ce cas, si votre commande elle-même contient des guillemets, il est possible que ces derniers ne soient alors pas interprétés comme il faut.

Utilisation

Pour que vos alias soient pris en compte après ajout dans les fichiers .bashrc ou .bash_aliases, il vous faudra relancer votre terminal ou saisir la commande
source ~/.bashrc

Attention cependant à ce que "source" n'appelle pas une fonction similaire à celle décrite dans cette partie.
Vous pouvez aussi avoir l'erreur: source : commande introuvable2), relancer le terminal reste alors le plus simple

Vous trouverez de nombreux alias en parcourant le net, et mettrez en place ou adapterez ceux qui vous correspondent au mieux, mais pour l'exemple, si vous ajoutez ceci dans le fichier ~/.bash_aliases

~/.bash_aliases
alias agu='sudo apt-get update'

il vous suffira alors de taper dans un terminal

agu

pour mettre à jour la liste de vos dépôts de paquets avec l'outil apt-get.

Vous pouvez également cumuler deux alias et en utiliser un troisième. Par exemple, toujours avec l'outil apt-get

alias agu='sudo apt-get update'
alias agg='sudo apt-get upgrade'
alias agd='sudo apt-get dist-upgrade'
alias miseàjour='agu && agg && agd'

Vous saisirez alors (dans un terminal) :

miseàjour

ce qui rechargera la liste des paquets avant d'en faire la mise à jour.

La déclaration de « variables aliases » est totalement libre et laissée à la discrétion de l’utilisateur, néanmoins, il peut être utile de qualifier les aliases selon un procédé mnémotechnique syncopé :
alias update='sudo apt-get update'
alias upgrade='sudo apt-get upgrade'
alias distup='sudo apt-get dist-upgrade'
alias sysup='update && upgrade && distup'

il est préférable d'éviter d'inclure la commande sudo dans la déclaration de l'alias si vous êtes débutant ou pour vous astreindre à déclarer des privilèges élevés en gardant à l'esprit la portée des commandes.
La commande :

sudo !!

vous donnera ponctuellement et rapidement les privilèges requis pour la commande précédemment entrée et ayant généré un message d'erreur de privilèges d'exécution.

Hormis ce champ d'application, le principe peut être utilisé afin de transcrire les commandes Windows en commandes Linux Bash

La déclaration de variables alias ne fige pas nécessairement la routine prédéfinie. Vous pouvez passer une commande déclarée dans une variable — comme mentionné précédemment — en lui ajoutant un paramètre lors de l'exécution ponctuelle à la suite de l'alias.
Par exemple :

alias ins='sudo apt install'

Saisir alors (dans un terminal) :

ins nom_programme

installera le programme souhaité.

Il est à noter que l'autocomplétion fonctionne également avec les alias.

Aller plus loin

Lister les alias

Il suffit de saisir la commande seule:

alias

alias avec sudo

Par défaut les alias ne sont pas accessibles quand vous utilisez sudo, un exemple courant est de lister un répertoire système :

sudo ll /media/
# va retourner
sudo: ll : commande introuvable

Pour que ce soit possible, ajouter dans vos alias 3) :

~/.bash_aliases
sudo='sudo '

Appeler un script

Si vous avez un script bash mais que vous ne l' avez pas défini dans le $PATH, il est possible de l' appeler par alias. Par exemple

alias monscript='sh -c /home/$USER/Documents/scripts/test/essai.sh'

Ajouter un alias provisoirement

Pour ajouter un alias uniquement pour la session du terminal en cours, il s'agira de saisir la commande alias sous la même forme que celle à écrire dans le fichier .bashrc ou .bash_aliases.
Par exemple, si vous voulez utiliser provisoirement un alias pour supprimer les copies de paquets installés avec l'outil apt-get, vous pouvez saisir:

alias agc='sudo apt-get clean'

Jusqu'à la fermeture du terminal, la commande

agc

exécutera en fait un sudo apt-get clean.

Retirer un alias provisoirement

Pour retirer, et non échapper un alias, de la session du terminal en cours, il s'agira de saisir

unalias mon_alias

Pour reprendre l'exemple précédent saisissez

unalias agc

En cas d'homonymie avec les commandes système

Les noms de commandes donnés dans les alias sont exécutés par priorité, en cas d'homonymie, aux commandes système. Pour exécuter la commande système, et non celle définie par un alias, une protection peut être employée avec la commande env.

alias commande_systeme='commande_systeme -option parametre'
user@host:$ env commande_systeme

Ainsi, commande_systeme sera employée sans option ni paramètre.

Échapper un alias

Lorsque l'on a créé une longue liste d'alias, il peut être utile de lancer une commande sans que celui-ci n'intervienne.
Exemple, vous avez créé cet alias :

alias ping='ping -c 4'

Et vous souhaitez lancer la commande ping sans les options définies dans l'alias, pour cela il suffit de mettre le caractère d'échappement antislash (\) devant la commande à lancer, comme ceci :

\ping

Les fonctions

Les alias ne pouvant pas prendre d'argument, il est nécessaire de définir une fonction qui vous le permettra. Il sera alors possible d'indiquer des arguments qui seront passés en fin de la commande mémorisée dans le fichier.
Par exemple

hy(){
   history | grep -vE -e "[0-9]{1,4}  hy |history" | grep -iE -e $1 | less
}

Cette fonction permet de chercher dans l'historique des commandes bash chaque exécution contenant le mot en argument, argument mémorisé dans les variables $1à $9.
Exemple pour chercher toutes les connexions par ssh :

hy ssh

Cependant, il n'est pas recommandé d'ajouter des fonctions dans le fichier .bashrc, d'une part parce qu'il sera plus lourd à charger, et d'autre part, parce que plus il y aura de modification, plus il y a aura de risque d'erreur et donc qu'il ne se charge plus.

Une solution permettant de joindre vos alias et vos fonctions est d'écrire une librairie, et de faire pointer la variable d'environnement $FPATH sur l'emplacement de votre librairie.FIXME Comment?
FIXME même problème de temps de chargement ou pas avec bash_aliases ?

Problème connu

Il se peut que vos alias ne tolèrent pas l’auto-complétion dans le cas de l'utilisation d'apt. Pour remédier à cela ajouter ce contenu au fichier .bashrc, en considérant que votre alias est apt-in pour sudo apt install (adapter ensuite à vos besoin) :

_apt_install_complete() {
    mapfile -t COMPREPLY < <(apt-cache --no-generate pkgnames "$2");
}
complete -F _apt_install_complete apt-in

Il existe également une application nommée complete_alias que vous pourrez trouver sous forme de sources à compiler à l'adresse : complete alias sur le GitHub.

Voir aussi


Contributeurs : odric88 teke Psykocrash BeAvEr mydjey

1)
enlever les dièses (#) en début de ligne