Articles

Comment utiliser les alias dans les commandes shell Linux

Cet article est réimprimé du livre A Practical Guide to Linux Commands, Editors, and Shell Programming 3rd edition, avec la permission de L’auteur et de L’éditeur Prentice Hall, Tous droits réservés.

un alias est un nom (généralement court) que le shell traduit en un autre nom ou commande (généralement plus long). Les alias vous permettent de définir de nouvelles commandes en substituant une chaîne au premier jeton d’une commande simple. Ils sont généralement placés dans le ~/.bashrc (bash) ou ~/.,fichiers de démarrage tcshrc (tcsh) afin qu’ils soient disponibles pour les sous-shells interactifs.

Sous bash la syntaxe de l’alias builtin est

alias ]

Sous tcsh la syntaxe est

alias ]

Dans la syntaxe bash pas d’espaces autour du signe égal. Si la valeur contient des espaces ou des onglets, vous devez placer la valeur entre guillemets. Contrairement aux alias sous tcsh, un alias bash n’accepte pas d’argument de la ligne de commande dans value., Utilisez une fonction bash lorsque vous devez utiliser un argument.

Un alias ne remplace pas lui-même, ce qui évite la possibilité d’une récursion infinie dans le traitement d’un alias comme suit:

alias ls='ls -F'

Vous pouvez imbriquer des alias. Les alias sont désactivés Pour les shells non interactifs (c’est-à-dire les scripts shell). Utilisez leunalias intégré pour supprimer un alias., Lorsque vous donnez une commande intégrée alias sans aucun argument, le shell affiche une liste de tous les alias définis:

$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'

pour afficher l’alias d’un nom particulier, entrez l’alias de commande suivi du nom de l’alias. La plupart des distributions Linux définissent au moins quelques alias. Entrez une commande alias pour voir quels alias sont en vigueur. Vous pouvez supprimer les alias que vous ne voulez pas du fichier de démarrage approprié.,

guillemets simples ou doubles dans les alias

le choix des guillemets simples ou doubles est important dans la syntaxe des alias lorsque l’alias inclut des variables. Si vous placez value entre guillemets doubles, toutes les variables qui apparaissent dans value sont développées lors de la création de l’alias. Si vous placez la valeur entre guillemets simples, les variables ne sont pas développées tant que l’alias n’est pas utilisé. L’exemple suivant illustre la différence.

la variable de mot-clé PWD contient le chemin d’accès du répertoire de travail., Max crée deux alias pendant qu’il travaille dans son répertoire personnel. Parce qu’il utilise des guillemets doubles lorsqu’il crée l’alias dirA, le shell remplace la valeur du répertoire de travail lorsqu’il crée cet alias. La commande alias dirA affiche l’alias dirA et montre que la substitution a déjà eu lieu:

 $ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max' 

lorsque Max crée l’alias dirB, il utilise des guillemets simples, qui empêchent le shell d’étendre la variable PW PWD., La commande alias dirB montre que l’alias dirB contient toujours la variable PW PWD non expansée:

 $ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'

Après avoir créé les alias dirA et dirB, Max utilisecd pour faire de cars son répertoire de travail et donne chacun des alias comme commande. L’alias qu’il a créé en utilisant des guillemets doubles affiche le nom du répertoire dans lequel il a créé l’alias en tant que répertoire de travail (ce qui est faux)., En revanche, l’alias dirB affiche le nom propre du répertoire de travail:

 $ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars

astuce: comment empêcher le shell d’appeler un alias

le shell ne vérifie que les commandes simples et sans guillemets pour voir s’il s’agit d’alias. Les commandes données en tant que noms de chemin relatifs ou absolus et les commandes entre guillemets ne sont pas vérifiées. Lorsque vous voulez donner une commande qui a un alias mais que vous ne voulez pas utiliser l’alias, précédez la commande avec une barre oblique inverse, spécifiez le chemin d’accès absolu de la commande ou donnez la commande sous ./command.,

des Exemples de alias

Les alias vous permet de taper r pour répéter la commande précédente ou r abc pour répéter la dernière ligne de commande qui a commencé avec abc:

$ alias r='fc -s'

Si vous utilisez la commande ls -ltr souvent, vous pouvez créer un alias qui remplace ls -ltr lorsque vous donnez la commande l:

une Autre utilisation courante de l’alias est de vous protéger contre les erreurs., L’exemple suivant remplace la version interactive de la balise rm utilitaire lorsque vous entrez la commande zap:

$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n

L’option-i causes rm pour vous demander de vérifier chaque fichier qui serait supprimé, vous aidant à éviter de supprimer les mauvais fichiers. Vous pouvez également alias rm avec la balise rm -i commande: alias rm='rm ‒i'.,

Les alias dans l’exemple suivant, la cause de la coquille de remplacer ls -l chaque fois que vous donnez un ll commande et ls ‒F chaque fois que vous utilisez la balise ls.L’option-F provoque l’impression d’une barre oblique (/) à la fin des noms des répertoires et d’un astérisque (*) à la fin des noms des fichiers exécutables.,

Dans cet exemple, la chaîne de caractères qui remplace l’alias ll (ls ‒l) contient lui-même un alias (ls). Lorsqu’il remplace un alias par sa valeur, le shell regarde le premier mot de la chaîne de remplacement pour voir s’il s’agit d’un alias. Dans l’exemple précédent, la chaîne de remplacement contient l’alias ls, donc une deuxième substitution se produit pour produire la commande finale ls ‒F ‒l., (Pour éviter un plongeon récursif, le ls dans le texte de remplacement, bien qu’un alias, n’est pas développé une deuxième fois.)

lorsqu’on lui donne une liste d’alias sans le champ=value ouvalue, l’élément alias affiche la valeur de chaque alias défini., L’élément alias signale une erreur si un alias n’a pas été défini:

$ alias ll l ls zap wx alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i' bash: alias: wx: not found

Vous pouvez éviter la substitution d’alias en précédant la commande aliased avec une barre oblique inverse (\):

$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir

parce que le remplacement d’un nom d’alias par la valeur alias ne change pas le reste de la ligne de commande, tous les arguments sont toujours reçus par la commande exécutée:

$ ll f* -rw-r--r--. 1 max pubs 641 04-01 08:12 fixtax.icn -rw-r--r--. 1 max pubs 30015 03-01 14:24 flute.ps -rwxr-xr-x. 1 max pubs 485 09-21 08:03 floor*

Vous pouvez supprimer un alias en utilisant le unalias intégré., Lorsque l’alias zap est supprimé, il n’est plus affiché par l’élément alias et son utilisation ultérieure entraîne un message d’erreur:

$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found