Vous êtes sur la page 1sur 48

ENI-ABT-Mali Chargé de cours

Système d’exploitation Dr Yacouba GOITA


2016- 2017

UTILISATION DU SHELL D'UNIX

Module3: UTILISATION DU SHELL

© Copyright IAM Dr Yacouba GOITA 1


OBJECTIFS

❶Connaître la structure de la ligne de


commande dans le SHELL d'UNIX.
❷Manipuler les méta caractères du SHELL
d’UNIX.
❸Introduire la notion de la programmation
dans le SHELL d’UNIX.

© Copyright IAM Dr Yacouba GOITA 2


La structure de la ligne de
commande:
• Lorsqu'une commande est lancée par le
SHELL, trois fichiers ayant chacun un numéro
appelé "file discriptor (fd) " sont ouverts par le
système. Ce sont:
– f Le fichier stdin ou standard input (fd=0)
– f Le fichier stdout ou standard output (fd=1)
– f Le fichier stderr ou standard error (fd=2)

© Copyright IAM Dr Yacouba GOITA 3


La forme canonique.

• La commande la plus simple est


un mot qui fait appel à un fichier
de même nom:
• Exemple:
–$ who
–$ date
© Copyright IAM Dr Yacouba GOITA 4
L'association de plusieurs commandes
sur la même ligne.
• Plusieurs commandes peuvent êtres
lancés sur la ligne si elles sont
séparées par un point virgule ";".
• Exemple:
$ date ; who

© Copyright IAM Dr Yacouba GOITA 5


Lancement d'une commande en
arrière plan.
• Il est possible de profiter de la
caractéristique multitâche d'UNIX pour
avoir plusieurs commandes qui tournent
en même temps et qui proviennent du
même utilisateur.
• Ceci est accompli en faisant exécuter des
commandes en arrière plan a l'aide du
caractère &.

© Copyright IAM Dr Yacouba GOITA 6


Exemple:
• $ sleep 5 (Attende 5 secondes pour
donner la main)
• $ (Le prompt reçue après 5 secondes )
• $(sleep 5 ; date )& date
2108 (l'identificateur du processus)
Mon March 00 09:13:21 2016
Mon March 00 09:13:26 2016

© Copyright IAM Dr Yacouba GOITA 7


• L'avant dernière ligne est le résultat
de deuxième commande date, alors
que la dernière ligne est celui de la
première commande date.
• On remarque le décalage de 5
secondes dans l'heure.

© Copyright IAM Dr Yacouba GOITA 8


Remarque
• Si le résultat d'une commande lancée en arrière plan
n'est pas affichable sur l'écran, la fin du processus
n'est pas indiquée par le SHELL. Dans ce cas, il est
conseillé de terminer la commande par un message.
• Exemple:
$ (ls -l > liste; sleep 10; echo "fini")&
21554
$fini
Le mot fini est affiché 10 secondes après l'écriture
sur liste.

© Copyright IAM Dr Yacouba GOITA 9


• L'exemple d'utilisation le plus courant est
l'écriture sur l'imprimante.
• Chaque tâche lancée en arrière-plan est
identifiée par un numéro appelé identificateur
de processus (process identifier) ou PID.
• Les état de ces tâches peuvent êtres consultés
sur l'écran grâce à la commande PS:

© Copyright IAM Dr Yacouba GOITA 10


$ ps -f.
• Les informations obtenues sont:
• Le nom de l'utilisateur qui a lancé la
commande,
• le numéro du PID de chaque processus,
• le numéro du PID du processus père,
• l'heure du début du processus,
• la durée du processus
• la commande de lancement

© Copyright IAM Dr Yacouba GOITA 11


Exemple
• $sleep 50&

© Copyright IAM Dr Yacouba GOITA 12


• Connaissant le numéro de la tâche ou son PID,
il est possible d'arrêter son exécution.
• Pour ce faire, il suffit d'envoyer le signal 9 a la
tâche désirée à l'aide de la commande kill.

© Copyright IAM Dr Yacouba GOITA 13


Exemple

On remarque que le processus (sleep 50) qui avait le


PID 22472 à disparu de la liste des processus.
© Copyright IAM Dr Yacouba GOITA 14
La redirection.
• Toute commande d'UNIX suppose l'existence
d'un flux de données en entrée qui provient
généralement du clavier et un flux de données
en sortie qui est généralement affiché sur
l'écran.
• Le clavier est donc considéré comme entrée
standard (stdin) et l'écran est considéré
comme la sortie standard (stdout).

© Copyright IAM Dr Yacouba GOITA 15


• Toute fois, le SHELL permet à l'utilisateur de :
• rediriger ses résultats vers un fichier accepter
les données à partir d'un fichier.
• Les données résultat d'une commande
peuvent êtres dirigées vers un fichier au lieu
de l'écran en utilisant le caractère ">" si le
fichier est nouveau et le caractère ">>" si les
données seront ajoutées en fin de fichier.
• Les syntaxes sont les suivantes:
© Copyright IAM Dr Yacouba GOITA 16
$commande > fichier

$commande >> fichier

© Copyright IAM Dr Yacouba GOITA 17


Exemple
$
$echo toto > temp
$cat temp
toto
$echo lolo >>temp
$cat temp
toto
lolo

© Copyright IAM Dr Yacouba GOITA 18


Le tube (pipe).
• C'est un moyen qui permet la simplification de
l'exécution de plusieurs commandes quand
chaque commande doit prendre comme
entrée la sortie de la commande qui la
précède.

© Copyright IAM Dr Yacouba GOITA 19


• En général, la séquence de redirection
suivante:
$commande1 > fichier_temp
$commande2 < fichier_temp
• est remplacée par:
$commande1 | commande2
• Les données résultat de la commande1 sont
les données entrée de la commande2.
© Copyright IAM Dr Yacouba GOITA 20
Exercice(a corriger en classe)

• Décomposez et interprétez les


commandes suivantes:
1. $ls -l | wc -l
2. $ls -l | head -6 | tail -1
3. $ls -l | tail -8 | tail -2

© Copyright IAM Dr Yacouba GOITA 21


Les métacaractères
• Le SHELL possède un ensemble de
caractères spéciaux appelés
métacartères:
Le métacaractère astérist (*) remplace
n'importe quelle séquence de caractères:
$echo *  ls
$echo fich.*  ls fich.*
© Copyright IAM Dr Yacouba GOITA 22
Les métacaractères(suite)
Le métacarctère point d'interrogation (?)
remplace un seul caractère.
• Exemple:
$ ls *.?
• Permet de lister que les fichiers dont les
extensions se composent d'un seul caractère.
Le métacaractère crochet ([...]) remplace un des
caractères contenus entre crochet.
 Le métacaractère crochet ([^...]) remplace un dås
caractères non contenus entre crochet.

© Copyright IAM Dr Yacouba GOITA 23


Les métacaractères(suite)
• Exemples:
• $ls essai[0-9]
• affiche fichiers ayant le nom "essai" et qui se
termine par un chiffre (essai1, esaai2,...etc)
• $ls essai[!5,7]
• affiche fichiers ayant le nom "essai" et qui ne
se termine pas par 5 ou 7.

© Copyright IAM Dr Yacouba GOITA 24


• L'interprétation spéciale des métacaractères
par le SHELL est annulée soit en les faisant
précédé par l'antislash "\", ou en les mettant
entre guillemets.

© Copyright IAM Dr Yacouba GOITA 25


La programmation dans le SHELL
• L'un des rôles les plus importants du SHELL est
la programmation (est de créer de nouvelles
procédures et commandes).
• Le SHELL utilise les variables pour mémoriser
et traiter les données.

© Copyright IAM Dr Yacouba GOITA 26


types de variables SHELL.
• Deux (2) types de variables sont traités par le
SHELL:
• les entiers
• les chaînes de caractères.
• Le type de variable est implicitement reconnu
par le SHELL.

© Copyright IAM Dr Yacouba GOITA 27


Exemples
• $var1=167 :var1 est un entier
• $var2=suite :var2 est une chaîne de
caractères.

© Copyright IAM Dr Yacouba GOITA 28


• La valeur d'une chaîne de caractères doit être
incluse entre guillemets si elle comprend des
• espaces, des tabulations ou des point-virgules.
• Le caractère $ doit toujours précéder le nom
de la variable, sauf au moment de la
• déclaration de cette variable.
• Une variable peut être assignée à une autre
variable:
© Copyright IAM Dr Yacouba GOITA 29
Exemple
• $ch2=$ch1 (Attention, ici le premier dollar ($)
est le prompt d'UNIX)

© Copyright IAM Dr Yacouba GOITA 30


Exercice
• Ecrire l'instruction qui permet d'obtenir la
réponse suivante du système:
• ch1=première chaîne et ch2= deuxième
chaîne

© Copyright IAM Dr Yacouba GOITA 31


Evaluation des expression
arithmétiques.
• La commande expr ordonne au shell d'évaluer
une expression arithmétique qui peut être
composée de variables entières seulement, de
constantes entières seulement ou d'une
combinaison des deux.
• Les opérations arithmétiques permises sont:

© Copyright IAM Dr Yacouba GOITA 32


• L'addition
• la soustraction -
• la multiplication \*
• la division /
• et le reste de la division euclidienne %
• Les termes de l'expression doivent être
séparés par des blancs.

© Copyright IAM Dr Yacouba GOITA 33


Exemples
$
$var1=15
$var2=5
$X1= ` expr $var1 + 1 `
$echo $X1
16
$expr $var1 - $var2
10
$X2=` expr $var1 / $var2 `
$echo $X2
0
$

© Copyright IAM Dr Yacouba GOITA 34


Les arguments résultats de
commandes.
• Le résultat d'une commande peut servir
comme argument à une autre commande.
Dans ce cas, la commande argument doit être
à l'intérieur des apostrophes.
• Exemple:
$mail ‘cat work/agenda’ < essai1
• permet d'envoyer le fichier essai1 à tous les
utilisateurs déclarés dans le fichier agenda.

© Copyright IAM Dr Yacouba GOITA 35


• Le résultat d'une commande peut aussi être
stocké dans une variable et utilisé
ultérieurement.
• Exemple:
• $date
• $heure=‘date’
• $echo $heure

© Copyright IAM Dr Yacouba GOITA 36


• Le résultat paramètré, c'est à dire subdivisé en
plusieurs champs par la commande set. Ces
• champs seront représentés par les paramètres
$1, $2, ........., $N
• Exemple:

© Copyright IAM Dr Yacouba GOITA 37


• $
• $set `date `
• $echo $1
• Fri
• $echo $5
• EET
• $echo $6
• 1997
• $

© Copyright IAM Dr Yacouba GOITA 38


La création de nouvelles commandes.
• Soit le traitement suivant:
$
$cat > cmd1
echo la date est `date `
^d
$cat cmd1
echo la date est `date `
$
• Cette nouvelle commande est lancée en utilisant le
fichier comme argument de la redirection en entrée
pour le SHELL. La forme générale est:
sh < commande ou sh commande

© Copyright IAM Dr Yacouba GOITA 39


Exemple
• $
• $sh cmd1
• L'exécution du fichier des commandes peut
être simplifier en invoquant seulement son
nom. Seulement, l'utilisateur doit posséder de
droit d'accès en exécution sur ce fichier.

© Copyright IAM Dr Yacouba GOITA 40


• L'exemple suivant montre comment on peut
combiner plusieurs commandes utiles pour ne
former qu'une seule.
$
$Vi etat
echo " salut,
la date est ` date `
les utilisateurs sont ` who `
mon répertoire est ` pwd ` "
:wq

© Copyright IAM Dr Yacouba GOITA 41


Affectation de variables en interactif.
• La commande read permet l'interaction de l'utilisateur
avec le système.
$
$ cat > menu
echo "Quel est votre choix 1, 2 ou 3 ?"
read choix
echo "vous avez choisis $choix"
^d
$sh menu
Quel votre choix 1, 2 ou 3 ?2
vous avez choisis 2
$

© Copyright IAM Dr Yacouba GOITA 42


Les commandes avec arguments.
• Pour généraliser l'utilisation d'une commande
récemment créer il est possible de la
paramètrer. Les arguments de la commande
sont indiqués par les paramètres $1, $2, $3,
.....,$9 dans le fichier.

© Copyright IAM Dr Yacouba GOITA 43


Exemple:

$
$cat > cx
chmod u+x $1
echo permission execute accordée.
^D
$

© Copyright IAM Dr Yacouba GOITA 44


• L'étape suivante consiste à rendre la
commande cx elle même exécutable:
$
$cx cx
cx : execute permission dinied
$sh cx cx
permission execute accordée.
$

© Copyright IAM Dr Yacouba GOITA 45


• Une fois que le fichier ( ou la commande ) cx est rendu
exécutable, il peut être utilisé avec de nouveaux
arguments sans passer par sh.
• Exemple:
$
$ ls -l menu
-rw-r--r-- 1 user1 group ......... menu
$cx menu
permission execute accordée.
$ ls -l menu
-rwxr--r-- 1 user1 group ......... menu
$

© Copyright IAM Dr Yacouba GOITA 46


Exercice:
• Modifiez la commande cx pour qu'elle puisse
accepter plusieurs arguments en une seule
fois.

© Copyright IAM Dr Yacouba GOITA 47


Questions ?

© Copyright IAM Dr Yacouba GOITA 48

Vous aimerez peut-être aussi