Académique Documents
Professionnel Documents
Culture Documents
interactives
1. Alias
Le mécanisme d’alias permet de définir des abrégés pour des commandes souvent utilisées. Il permet aussi de
surcharger des commandes, c’estàdire de forcer l’utilisation de certaines options.
La commande alias permet de définir un alias. Invoquée sans argument, elle donne la liste des définitions
existantes.
Exemples
$ ls -l
total 6
-rw-r--r-- 1 michel michel 0 Sep 26 17:38 fic1
-rw-r--r-- 1 michel michel 0 Sep 26 17:38 fic11
-r--r--r-- 1 michel michel 916 Sep 26 17:38 fic2
-rw-r--r-- 1 michel michel 0 Sep 26 17:38 titi
-rw-r--r-- 1 michel michel 106 Sep 26 17:38 toto
-r--r--r-- 1 michel michel 916 Sep 26 17:38 zorro
$ alias l=’/usr/bin/ls -l’
$ alias l
l=’/usr/bin/ls -l’
$ l
total 6
-rw-r--r-- 1 michel michel 0 Sep 26 17:38 fic1
-rw-r--r-- 1 michel michel 0 Sep 26 17:38 fic11
-r--r--r-- 1 michel michel 916 Sep 26 17:38 fic2
-rw-r--r-- 1 michel michel 0 Sep 26 17:38 titi
-rw-r--r-- 1 michel michel 106 Sep 26 17:38 toto
-r--r--r-- 1 michel michel 916 Sep 26 17:38 zorro
$
Nous obtenons ici un abrégé l pour exécuter, en fait la commande ls l. Le shell examine les définitions d’alias avant
le parcours des répertoires du PATH.
La commande type permet de savoir si un nom de commande est un alias, une commande interne du shell ou bien
une commande externe (fichier ordinaire exécutable sur disque).
$ type type
type is a shell builtin
$ type cd
cd is a shell builtin
$ type l
l is an alias for /usr/bin/ls -l
$ type cal
cal is /usr/bin/cal
$
La commande unalias permet la suppression d’un alias.
$ unalias l
$ l
ksh: l: not found
$
La surcharge de commande force l’utilisation systématique de certaines options. Elle est utile pour sécuriser l’emploi
de certaines commandes sensibles.
2. Historique des commandes
Par défaut, le Korn shell mémorise les 128 dernières commandes tapées par l’utilisateur dans un fichier .sh_history
créé dans le répertoire de connexion. Ce fichier est conservé au travers des connexions successives.
Deux variables d’environnement (rarement modifiées) permettraient de changer le comportement par défaut :
HISTFILE Nom du fichier d’historique.
HISTSIZE Nombre de commandes mémorisées.
Grâce à ce fichier, le shell propose diverses méthodes de rappel des commandes.
a. Rappel simple de commandes
La commande de gestion de l’historique s’appelle fc. Elle comporte beaucoup d’options. Pour faciliter son
utilisation, le shell définit un certain nombre d’alias internes.
Affichage des dernières commandes :
fc l Afficher les 16 dernières commandes avec un numéro d’ordre.
r Relancer la dernière commande en ksh (r est un alias pour fc e ).
!! Relancer la dernière commande en bash.
r num Relancer la commande d’indice num dans la liste (ksh).
!num Relancer la commande d’indice num dans la liste (bash).
r string Relancer la commande la plus récente commençant par la chaîne string (ksh).
!string Relancer la commande la plus récente commençant par la chaîne string (bash).
r str1=str2 Relancer la dernière commande en remplaçant la chaîne str1 par la chaîne str2 (ksh).
Exemples de manipulation
$ history
....................
32 clear
33 cal
34 cal 7 1789
35 ls -al
36 ls -l
37 date
38 more /etc/passwd
39 cat /etc/group
40 history
$ r 34
cal 7 1789
July 1789
S M Tu W Th F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
$ r ca
cal 7 1789
July 1789
S M Tu W Th F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
$
b. Rappel et édition de commandes avec l’éditeur intégré
Une connaissance minimale de l’éditeur vi (chapitre Les éditeurs de texte) est nécessaire pour savoir rappeler
efficacement des commandes. En effet, le Korn shell, via la fonctionnalité baptisée éditeur intégré, permet de
modifier la commande en cours de saisie ou, bien entendu, toute commande déjà tapée et présente dans le fichier
d’historique.
ou bien :
set -o vi
La frappe de la touche [Escape] au niveau du shell déclenche alors ce mode éditeur intégré sur le fichier
d’historique et permet l’édition des commandes avec tous les ordres de l’éditeur vi.
Il faut signaler que les déplacements par les flèches ne sont pas toujours opérationnels dans le cadre de l’éditeur
intégré et qu’il est alors nécessaire d’utiliser les véritables commandes de déplacement : h, j, k, l.
L’éditeur de texte emacs est quelquefois disponible en tant qu’éditeur intégré dans certaines versions du ksh et il
s’agit de l’éditeur intégré par défaut en bash. Il est possible de l’activer en tant qu’éditeur intégré en utilisant la
syntaxe : set o emacs.
Les équivalents des déplacements h, j, k, l sont obtenus respectivement par les touches [Ctrl] b, [Ctrl] n, [Ctrl] p et
[Ctrl] f. La modification de lignes est intuitive puisque l’utilisateur se trouve naturellement en mode insertion. En ce
qui concerne les effacements, la touche [backspace] permet d’effacer le caractère précédent tandis que la touche
[Ctrl] d efface le caractère courant.
c. Rappel et édition de commandes avec la commande interne fc
La commande fc de gestion de l’historique permet aussi d’éditer un ensemble de commandes dans un fichier
temporaire.
Pour activer cette possibilité, nous devons positionner la variable d’environnement FCEDITavec le nom complet de
l’éditeur choisi :
FCEDIT=/usr/bin/vi
export FCEDIT
Il convient, dans un premier temps, d’obtenir le groupe de commandes souhaité.
fc Seulement la dernière commande.
fc n Seulement la commande de numéro n (liste obtenue par history).
fc n1 n2 Les commandes de numéro n1 à n2 (liste obtenue par history).
Après d’éventuelles modifications sur ce groupe de commandes, la sortie de l’éditeur en déclenche l’exécution. Il
convient d’être vigilant dans cette manipulation car les commandes seront relancées même si nous quittons
l’éditeur sans sauvegarder. Les commandes non souhaitées doivent donc absolument être supprimées du fichier
temporaire.
3. Contrôle des tâches
Le shell nous permet de stopper momentanément un processus en premier plan via la frappe de [Ctrl] z ou un
processus en arrièreplan en lui envoyant le signal STOP à l’aide de la commande kill. Il sera possible de relancer
La commande interne jobs donne la liste des processus soit stoppés, soit s’exécutant en arrièreplan. Elle indique
un numéro d’ordre exploitable par les commandes fg ou bg ainsi que par la commande kill.
Il y a donc plusieurs possibilités de gestion des processus concernés :
fg Reprise en premier plan du dernier processus stoppé.
fg %n Reprise en premier plan d’un processus désigné par son numéro d’ordre dans la liste des travaux.
bg Reprise en arrièreplan du dernier processus stoppé.
bg %n Reprise en arrièreplan d’un processus désigné par son numéro d’ordre dans la liste des travaux.
kill %n Élimination d’un processus désigné par son numéro d’ordre dans la liste des travaux.
Dans l’exemple suivant, nous démarrons une commande ls en premier plan. Cette commande est stoppée via la
touche [Ctrl] z. La commande jobs nous permet de visualiser le processus stoppé. Ce processus est ensuite relancé
en arrièreplan via la commande bg.
Nous lançons à nouveau une commande ls en premier plan. Celleci est ensuite stoppée. Une seconde commande
est démarrée en arrièreplan. Les deux processus sont visualisés par la commande jobs puis successivement
éliminés via la commande kill qui utilise leur numéro d’ordre dans la liste des travaux.