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.
Pour créer un ou plusieurs alias, on utilise la syntaxe : alias nom=valeur ...
$ 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).
$ 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.
$ 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.
$ 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.
$ alias c='cat ' $ $ c d 4.0 $
La valeur d’un alias peut inclure plusieurs commandes.
$ 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.
$ 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.
$ 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 :
$ 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 ...
$ alias ll alias ll='ls -l' $
Pour rendre indéfinie la valeur d’un ou plusieurs alias, on utilise la commande unalias.
La syntaxe est : unalias nom ...
$ 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'
$