IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à la programmation en Bash


précédentsommairesuivant

XIII. Alias

Un alias permet d'abréger une longue commande, de remplacer le nom d'une commande existante par un autre nom ou bien de modifier le comportement d'une commande existante.

XIII-1. Création d'un alias

Pour créer un ou plusieurs alias, on utilise la syntaxe :

 
Sélectionnez
alias nom=valeur ...
 
Sélectionnez
Ex : $ alias cx='chmod u+x'
$

Le nom de l'alias peut être présent dans sa propre définition. La commande alias rm='rm -i' redéfinit le comportement par défaut de la commande unix rm en demandant à l'utilisateur de confirmer la suppression (on force l'utilisateur à utiliser l'option -i).

 
Sélectionnez
Ex : $ alias rm='rm -i'
$
$ > err => création du fichier err
$
$ rm err
rm: détruire fichier régulier vide `err'? o => l'alias rm demande
$ => confirmation
$ ls err
ls: err: Aucun fichier ou répertoire de ce type => le fichier err a été
$ => supprimé

Attention :

on ne doit pas définir un alias et utiliser cet alias dans la même ligne mais sur deux lignes différentes.

 
Sélectionnez
Ex : $ alias aff='echo bonjour' ; aff tout le monde
-bash: aff: command not found => aff tout le monde n'a pu s'exécuter !
$
$ aff la compagnie
bonjour la compagnie => l'alias est connu
$

Si l'on désire utiliser plusieurs alias dans la même commande, il est nécessaire de laisser un caractère espace ou tabulation comme dernier caractère de valeur.

 
Sélectionnez
Ex : $ cat /etc/debian_version
4.0
$
$ alias c=cat d=/etc/debian_version
$
$ c d
cat: d: Aucun fichier ou répertoire de ce type
$

Dans l'exemple ci-dessus, l'alias d n'a pas été interprété car le dernier caractère de la valeur de c n'est ni un espace, ni une tabulation. En ajoutant un caractère espace, on obtient le résultat voulu.

 
Sélectionnez
Ex : $ alias c='cat '
$
$ c d
4.0
$

La valeur d'un alias peut inclure plusieurs commandes.

 
Sélectionnez
Ex : $ pwd
/tmp => répertoire courant
$ alias scd='echo salut ; cd ' => après cd il y a un caractère espace
$ alias rep=/home/sanchis/bin
$
$ scd rep
salut
$ pwd
/home/sanchis/bin => nouveau répertoire courant
$

La protection de la valeur d'un alias doit être choisie judicieusement. Définissons un alias affichant l'heure courante. La suite de commandes à exécuter est la suivante :

 
Sélectionnez
set $(date) ; echo ${5%:*}

Cette suite de commandes peut être entourée avec des caractères quote ou bien avec des caractères guillemet.

 
Sélectionnez
Ex : $ date
vendredi 22 décembre 2006, 18:45:38 (UTC+0100)
$
$ alias h='set $(date) ; echo ${5%:*}'
$
$ h
18:46
$
$ sleep 60
... => attente de 60 secondes
$ h
18:47 => mise à jour de l'heure
$

Attention :

en entourant la suite de commandes avec des caractères guillemet, le shell exécute les substitutions avant d'affecter la valeur à l'alias, puis interprète cet alias.

 
Sélectionnez
Ex : $ alias g="set $(date) ; echo ${5%:*}"
$
$ g
-bash: syntax error near unexpected token `('
$

C'est la présence de la parenthèse ouvrante de la chaîne de caractères

set vendredi 22 décembre 2006, 19:08:21 (UTC+0100)

Cette chaîne est exécutée comme une commande par le shell, ce qui provoque l'erreur.

Liste des alias définis :

Pour connaître l'ensemble des alias définis, on utilise la commande alias sans argument :

 
Sélectionnez
Ex : $ alias
alias aff='echo bonjour'
alias c='cat '
alias cx='chmod u+x'
alias d='/etc/debian_version'
alias g='set vendredi 22 décembre 2006, 19:08:21 (UTC+0100) ; echo '
alias h='set $(date) ; echo ${5%:*}'
alias ll='ls -l'
alias ls='ls --color=auto'
alias rep='/home/sanchis/bin'
alias rm='rm -i'
alias scd='echo salut ; cd '
$

Pour connaître la valeur d'un ou plusieurs alias : alias nom …

 
Sélectionnez
Ex : $ alias ll
alias ll='ls -l'
$

XIII-2. Suppression d'un alias

Pour rendre indéfinie la valeur d'un ou plusieurs alias, on utilise la commande unalias.

La syntaxe est :

 
Sélectionnez
unalias nom ...
 
Sélectionnez
Ex : $ unalias g rep aff scd
$
$ alias
alias c='cat '
alias cx='chmod u+x'
alias d='/etc/debian_version'
alias h='set $(date) ; echo ${5%:*}'
alias ll='ls -l'
alias ls='ls --color=auto'
alias rm='rm -i'
$

précédentsommairesuivant

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.