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 :
alias nom
=
valeur ...
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).
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.
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.
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.
Ex : $
alias c
=
'cat '
$
$
c d
4
.0
$
La valeur d'un alias peut inclure plusieurs commandes.
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 :
set $
(
date) ; echo ${5%:*}
Cette suite de commandes peut être entourée avec des caractères quote ou bien avec des caractères guillemet.
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.
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 :
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
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 :
unalias nom ...
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'
$