Linux / Commande alias : créer et conserver des raccourcis Bash
Dans Bash, alias nom='commande options' associe un raccourci à un texte que le shell substitue lors de la lecture d’une commande. Par exemple, alias jb_ll='ls -alF' permet d’utiliser jb_ll pour une liste détaillée ; pour conserver ce raccourci dans de nouvelles sessions, ajoutez sa définition au fichier de démarrage effectivement utilisé.
Créer et examiner un raccourci dans le shell courant
Un alias est un mécanisme de substitution de texte, distinct d’une fonction ou d’un programme. Pour une commande simple, les arguments saisis après le raccourci suivent le texte substitué. Ainsi, jb_ll /var/log devient une invocation de ls -alF /var/log, à condition que l’alias soit actif et que l’outil accepte ces options.
Avant de choisir un nom, vérifiez s’il est déjà utilisé :
type -a jb_ll
alias jb_ll
Un diagnostic d’absence est normal pour un nouveau nom. Si une définition existe, examinez-la avant de la remplacer ou choisissez un autre raccourci. Les noms préfixés ici servent à réduire les collisions avec des commandes et alias habituels.
Créez ensuite l’alias, sans espace autour du signe égal :
alias jb_ll='ls -alF'
Dans votre terminal Bash interactif, exécutez-le sur une ligne suivante :
jb_ll .
La liste devrait présenter les entrées du répertoire courant avec les options demandées. L’alias n’installe pas ls, ne copie aucun fichier et ne modifie pas son contenu. Les exemples de cette page visent Bash et des outils courants sous Linux ; un autre shell peut suivre d’autres règles.
Pour inspecter un raccourci précis ou obtenir la liste des définitions :
alias jb_ll
alias
alias -p
Les deux dernières formes affichent les alias dans une forme réutilisable comme entrée Bash. alias nom échoue si le nom n’est pas défini. Pour distinguer un alias d’une fonction, d’un builtin ou d’un fichier, utilisez le diagnostic de résolution avec type.
Citer la définition et comprendre quand le texte est développé
Les apostrophes autour de la valeur conservent les espaces et empêchent des expansions immédiates lors de la définition. Cela ne rend pas le contenu inerte pour toujours : une fois substitué, il est analysé comme du code du shell.
Par exemple, cette définition conserve la référence à $PWD pour une utilisation ultérieure :
alias jb_ou='printf "%s\n" "$PWD"'
À une invite suivante, jb_ou affiche le répertoire courant à cet instant. Avec des guillemets doubles autour d’une définition contenant une variable ou une substitution de commande non protégée, cette expansion peut au contraire se produire dès la création de l’alias.
Une définition complexe contenant plusieurs niveaux de citations devient vite difficile à maintenir. Un alias peut également introduire un tube ou une redirection : des arguments ajoutés ensuite ne se placent alors pas nécessairement sur la commande que vous aviez en tête. Gardez les alias simples et utilisez une fonction pour traiter explicitement les arguments.
| Définition | Usage et condition |
|---|---|
alias jb_ll='ls -alF' |
Afficher une liste détaillée avec l’outil ls de votre environnement. |
alias jb_gs='git status' |
Consulter l’état d’un dépôt lorsque Git est installé et que le contexte convient. |
alias jb_dfh='df -h' |
Afficher l’utilisation des systèmes de fichiers dans des unités lisibles. |
Choisissez des noms dont la signification reste claire. Remplacer le nom d’une commande existante peut masquer un changement d’options dans vos habitudes ; les procédures partagées doivent indiquer les commandes et options nécessaires plutôt que dépendre d’alias personnels. La documentation officielle des alias Bash explique la substitution et ses limites.
Conserver un alias dans les nouvelles sessions
Identifier le fichier de démarrage réellement lu
Une définition saisie dans un terminal reste dans l’état de ce shell. Une nouvelle instance de Bash ne reçoit pas automatiquement ses alias : elle doit les redéfinir, généralement en lisant ses fichiers de démarrage. Un sous-shell hérité peut en conserver une copie ; cela ne constitue pas un enregistrement permanent.
Un Bash interactif non lancé comme shell de connexion lit normalement ~/.bashrc. Un shell de connexion lit /etc/profile, puis le premier fichier personnel existant et lisible parmi ~/.bash_profile, ~/.bash_login et ~/.profile. Ce fichier peut à son tour charger ~/.bashrc, mais ce lien doit exister dans votre configuration.
~/.bash_aliases est une convention utilisée dans certaines configurations. Bash ne lit pas ce nom automatiquement : vérifiez que le fichier effectivement exécuté le charge avant d’y placer des définitions. Les règles officielles des fichiers de démarrage Bash décrivent aussi les cas des scripts, connexions distantes et modes particuliers.
Sauvegarder, modifier et valider le fichier
Gardez le terminal actuel ouvert. Si vous modifiez un ~/.bashrc existant, faites d’abord une sauvegarde. Avec GNU cp, cette commande conserve aussi les versions précédentes d’une sauvegarde du même nom :
cp --backup=numbered -- ~/.bashrc ~/.bashrc.before-alias
Si vous utilisez plutôt un fichier d’alias déjà chargé, sauvegardez ce fichier en adaptant les deux chemins. Si le fichier à modifier n’existe pas, ne remplacez pas un autre fichier pour suivre l’exemple : créez le fichier prévu dans votre configuration avec votre éditeur.
Ajoutez une seule définition dans la partie appropriée aux sessions interactives, en conservant les conditions et commandes existantes :
alias jb_ll='ls -alF'
Pour un ~/.bashrc modifié, recherchez ensuite les erreurs de syntaxe sans exécuter son contenu :
bash -n ~/.bashrc
Une sortie vide accompagnée du statut 0 signifie que cette analyse n’a pas détecté d’erreur de syntaxe ; cela ne valide pas toute la logique du fichier. En cas de diagnostic, corrigez la ligne indiquée avant d’ouvrir une nouvelle session.
Ouvrez un nouveau terminal utilisant le type de shell prévu, puis vérifiez alias jb_ll et type jb_ll. Relire le fichier avec source ~/.bashrc exécuterait aussi toutes ses autres commandes ; ce n’est pas nécessaire pour effectuer cette vérification dans une nouvelle session.
Revenir sur la définition ajoutée
Pour retirer uniquement l’alias de la session courante :
unalias jb_ll
Supprimez ou commentez aussi sa définition dans le fichier de démarrage pour éviter qu’il soit recréé. Ouvrez une nouvelle session pour vérifier le résultat. Relire un fichier dont la ligne a été supprimée ne retire pas à lui seul un alias déjà présent en mémoire.
Si vous devez récupérer un réglage précédent, utilisez la sauvegarde pour retrouver la définition concernée. Ne recopiez pas aveuglément tout le fichier de sauvegarde par-dessus une configuration qui aurait reçu d’autres modifications depuis.
Choisir une fonction lorsque les arguments ont un rôle précis
Un alias simple peut ajouter des options et laisser des arguments après elles, mais il ne possède pas ses propres paramètres $1 et $@ comme une fonction. Mettre $1 dans son texte ferait référence aux paramètres du contexte où ce texte est développé, ce qui ne remplace pas une gestion d’arguments.
Pour créer un répertoire puis y entrer, une fonction peut vérifier l’entrée et réutiliser le même argument à deux endroits. Vérifiez d’abord que le nom jb_mkcd est libre avec type -a jb_mkcd, puis définissez cette fonction complète dans Bash :
function jb_mkcd {
if [ "$#" -ne 1 ] || [ -z "$1" ]; then
printf 'Utilisation : jb_mkcd repertoire\n' >&2
return 64
fi
local destination
case "$1" in
/*) destination=$1 ;;
*) destination=./$1 ;;
esac
command mkdir -p -- "$destination" || return
builtin cd -- "$destination"
}
Sur une ligne suivante, choisissez un nouveau nom de répertoire d’exercice qui n’entre pas en conflit avec vos données :
jb_mkcd 'projet-demo/sous dossier'
pwd
Si la création et le changement de répertoire réussissent, pwd indique le sous-répertoire choisi. Les guillemets conservent l’espace. Le préfixe ./ ajouté aux chemins relatifs évite qu’une valeur de CDPATH détourne la recherche vers un autre emplacement ; le chemin absolu reste utilisable.
Un appel sans argument, avec un nom vide ou avec plusieurs arguments renvoie 64 sans quitter le shell. Si mkdir échoue, la fonction ne tente pas le changement de répertoire. Si le changement de répertoire échoue après la création, le répertoire peut subsister : la fonction ne supprime rien automatiquement.
Pour quitter le répertoire d’exercice, cd - permet normalement de revenir au répertoire précédent. Si les deux répertoires de l’exemple ont bien été créés par vous pour cet essai et sont vides, vous pouvez les retirer depuis leur répertoire parent avec rmdir -- 'projet-demo/sous dossier' 'projet-demo'. Retirez la fonction temporaire avec unset -f jb_mkcd si vous ne souhaitez pas la conserver.
Diagnostiquer un alias qui ne s’applique pas
Vérifier le mode interactif et la session
Bash ne développe normalement pas les alias dans un script non interactif. L’option expand_aliases peut changer ce comportement, mais un script partagé sera généralement plus clair avec une fonction ou une commande explicite. Vous pouvez inspecter l’option sans la modifier :
shopt expand_aliases
Contrôlez aussi le shell exécutant réellement le code et le fichier qu’il a lu. Un alias présent dans un terminal n’est pas la preuve qu’un autre terminal ou un nouveau processus possède la même définition.
Séparer définition et lecture de la commande suivante
Les alias sont développés quand Bash lit le code. Même lorsque leur expansion est active, une définition et un appel sur la même ligne peuvent être lus avant que la définition ait pris effet. Cette forme n’est donc pas un modèle à suivre :
alias jb_salut='printf "%s\n" "Bonjour"'; jb_salut
Dans une nouvelle session où le nom n’existe pas, cet appel peut être introuvable. Le même problème concerne les commandes composées lues en entier, telles qu’un bloc ou une fonction : une simple ligne supplémentaire à l’intérieur de ce bloc ne suffit pas toujours. Placez la définition à part, puis saisissez l’appel à une invite ultérieure, ou utilisez une fonction pour le code structuré.
Contourner un alias et choisir le bon outil
Pour empêcher ponctuellement la substitution de l’alias ls, vous pouvez écrire \ls. Cela n’empêche pas une fonction de ce nom d’être choisie. Dans une écriture ordinaire, command ls évite généralement la substitution de ce nom et omet la recherche de fonction ; le guide de command détaille les cas où les alias et le contexte de lecture demandent plus d’attention.
De même, sudo jb_ll ne développe normalement pas jb_ll comme votre alias : le nom apparaît comme un argument de sudo, qui doit trouver une commande à exécuter. Pour une procédure administrative, indiquez directement le programme et ses options.
| Forme | À choisir pour | Condition |
|---|---|---|
| Alias | Un nom court ou des options habituelles dans un terminal. | Définition et expansion disponibles dans le shell concerné. |
| Fonction | Des arguments à vérifier, des conditions ou plusieurs étapes. | Définition compatible avec le shell et présente dans son contexte. |
| Script | Une tâche réutilisable et partageable sous forme de fichier. | Interpréteur, dépendances et méthode d’exécution indiqués ; un fichier ne devient pas portable par sa seule existence. |
Pour une nouvelle définition, commencez par un essai dans le terminal et vérifiez son comportement avec des données limitées. Enregistrez ensuite uniquement le raccourci utile, avec un nom qui rende son effet prévisible.




