Documente Academic
Documente Profesional
Documente Cultură
Rabat
Dpartement d'Informatique
Systmes d'exploitation I
Pr. Hicham Laanaya hicham.laanaya@gmail.com
20142015
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Plan du cours
1
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
2/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
3/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel
Bus
UC
Disque dur
Priphrique de stockage
MC
Priphrique d'entre/sortie
Carte mre
4/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel
La carte mre
La carte mre est une plaque de rsine contenant l'intrieur et sur les deux faces une fine couche de cuivre sur
laquelle est imprim le circuit imprim, On y trouve les lments suivants :
Le microprocesseur
La mmoire vive RAM (Random Access Memory) : La mmoire vive RAM (Random Access Memory). Elle
reprsente le lieu de travail dans un ordinateur savoir quun programme stock sur le disque dur est charg
en mmoire centrale o ses instructions seront accdes une une pour tre excutes par le processeur. La
RAM est une mmoire volatile c'est--dire que son contenu serait perdu en cas de coupure dlectricit
La mmoire morte ROM (Read Only memory) : Elle contient les programmes du BIOS qui grent le
chargement du systme et les entres-sorties. On distingue plusieurs puces ROM tel que la PROM
(Programmable ROM) et EPROM (Erasable Programmable ROM)
L'horloge qui permet de cadencer le fonctionnement du processeur, du bus. Sa frquence caractrise la carte
mre. Elle est gnralement trs infrieure celle du processeur (de l'ordre de quelques centaines de MHz).
Un ensemble de bus : un bus est un ensemble de fils de cuivre incrusts dans la carte mre qui permettent de
vhiculer l'information. Le bus se caractrise par le nombre de fils qui le composent. Si le nombre de fils est
de 64, on parle alors de bus 64 bits. Il est galement caractris par sa frquence de fonctionnement.
Le "chipset" ou "jeu de composants" soud sur la carte mre. Le chipset rgit tous les changes au sein du
PC en aiguillant les donnes sur les diffrents bus de la carte mre.
5/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel
6/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Notions de systmes d'exploitation
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
7/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Notions de systmes d'exploitation
8/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Les principaux systmes d'exploitation
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
9/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Les principaux systmes d'exploitation
10/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Les principaux systmes d'exploitation
11/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Introduction au systme Unix
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
12/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Introduction au systme Unix
Systme Unix
Unix est un systme d'exploitation (Operating System)
Multi-utilisateurs : le systme identifie des personnes logiques et permet ces personnes d'utiliser le
systme dans certaines limites
Multi-tches : le systme est tudi pour excuter plusieurs programmes en mme temps, grce au concept
de "temps partag"
Multi-plateforme : Unix n'est pas un systme ddi un processeur, mais que c'est une famille de systmes
que l'on retrouve sur une multitude de plates-formes.
Distributions Unix
Des Unix propritaires :
Nom
Propritaire
Solaris
Sun
HPUX
HP
AIX
IBM
Digital Unix Digital
Processeur
Sparc & Intel
PA
Risc & PowerPC
Alpha
13/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Introduction au systme Unix
Architecture et caractristiques
On peut dcomposer un systme Unix en trois grandes entits :
Le noyau : il assure la gestion de la mmoire et des entres sorties de bas niveau et l'enchanement des tches
Un ensemble d'utilitaires : ddis des tches diverses :
des interprteurs de commande appels Shells permettant de soumettre des tches au systme, tches
pouvant tre concurrentes et/ou communicantes
des commandes de manipulation de fichiers (copie, dplacement, effacement, etc.)
Une base de donnes systme : un ensemble de fichiers contenant :
des informations sur la configuration des diffrents services
des scripts de changement d'tat du systme (dmarrage, arrt, )
Applications
CPU
Noyau
RAM
Drivers
Prphiriques
Vido
Clavier
Souris
Disques
...
14/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Introduction au systme Unix
Logiciels propritaires
Ces logiciels sont vendus et sont rgis par une licence restrictive qui interdit aux utilisateurs de copier,
distribuer, modifier ou vendre le programme en question
Logiciels libres
Les logiciels libres sont les logiciels que l'ont peut librement utiliser, changer, tudier et redistribuer. Cela
implique que l'on ait accs leur code source (d'o le terme quivalent OpenSource)
i la libert d'excution : tout le monde a le droit de lancer le programme, quel qu'en soit le but
ii la libert de modification : tout le monde a le droit d'tudier le programme et de le modifier, ce
qui implique un accs au code source
iii la libert de redistribution : tout le monde a le droit de rediffuser le programme, gratuitement
ou non
iv la libert d'amlioration : tout le monde a le droit de redistribuer une version modifie du
programme
15/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Commandes de base du Shell
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
16/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Commandes de base du Shell
17/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Commandes de base du Shell
cp -i /home/profs/prof1/Hello.c /home/etudiants/etudiant1
cp :
/home/etudiants/etudiant1 :
Mta-caractres du Shell
sont interprts spcialement par le Shell avant de lancer la commande entre par l'utilisateur
permettent de spcifier des ensembles de fichiers, sans avoir rentrer tous leurs noms
Voici les plus utiliss :
*:
?:
18/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
19/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Concept de base
Le systme de fichiers d'Unix est une vaste arborescence dont les nuds sont des rpertoires et les feuilles
des fichiers
Un fichier peut :
i contenir des donnes
ii tre un lien sur un autre fichier
iii tre un moyen d'accs un priphrique (mmoire, cran, disque dur, ...)
iv tre un canal de communication entre processus
bin
boot
bash
vmlinuz
etc
bash
home
passwd
usr
etudiant1
etudiant2
java
.bashrc
include
sys
stdio.h
rpertoire
fichier
Go.java
types.h
20/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Les i-nuds
chaque fichier correspond un i-noud contenant :
le type du fichier et les droits d'accs des diffrents utilisateurs
l'identification du propritaire du fichier
la taille du fichier exprime en nombre de caractres (pas de sens pour les fichiers spciaux)
le nombre de liens physiques sur le fichier
la date de dernire modification/consultation (criture/lecture) du fichier
la date de dernire modification du nud (modification d'attributs)
l'identification de la ressource associe (pour les fichiers spciaux)
.
21/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Signification
Lettres majuscules
Lettres minuscules
Chiffres
Caractre soulign et caractre virgule
Caractre point
22/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Sparateur
/home/etudiant1/data/Fichier.txt
Chemin
Nom
23/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
/var/log
../../home/etd/etudiant1/fichier.txt
usr
etc
bash
vmlinuz
home
prof1
lib
var
etd
log
etudiant1
acces.dat
prof
fichier.txt
Hello.c
24/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
usr
etc
bash
vmlinuz
home
lib
log
prof
etd
prof1
etudiant1
fichier.txt
var
acces.dat
Hello.c
25/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
/home/prof/prof1
/etc
/home/prof
acces.dat
../../var/log/acces.dat
../../../var/log/acces.dat
usr
etc
bash
vmlinuz
home
lib
log
prof
etd
prof1
etudiant1
fichier.txt
var
acces.dat
Hello.c
26/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Explications
affiche le contenu du fichier
affiche les caractristiques du fichier
affiche les caractristiques d'une liste de fichiers
(l'option -i affiche les numros d'i-nuds des fichiers)
supprime un fichier
modifie les caractristiques de date d'un fichier
(permet galement de crer un fichier vide)
mkdir
cd
pwd
rmdir
Explications
affiche la liste des fichiers contenus dans un rpertoire
Options :
-a liste aussi les fichiers cachs
-l donne des informations dtailles sur chaque fichier
-i donne le numro de l'i-nud du fichier
cre un rpertoire
change le rpertoire de travail (rpertoire courant)
donne le chemin absolu du rpertoire courant
supprime un rpertoire vide
.
27/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
mv
Explications
copie de fichier
syntaxe cp <source> <destination>
duplication du contenu du fichier
et cration d'une entre dans un rpertoire
dplace/renomme un fichier
syntaxe mv <source> <destination>
suppression d'une entre dans un rpertoire
et cration d'une nouvelle entre dans un rpertoire
Si on copie (dplace/renomme) un fichier dans un fichier qui existe dj, ce second fichier est modifi (contenu
cras et caractristiques modifies)
28/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
29/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
30/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Le super-utilisateur (root)
Il est toujours considr par le systme comme propritaire de tous les fichiers (et des processus)
La personne qui gre le systme est normalement la seule connatre son mot de passe
Lui seul peut ajouter de nouveaux utilisateurs au systme.
.
31/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Notions de scurit
Concept de base
sujet
objet
opration
Des rgles de scurit ont pour rle d'indiquer les oprations (droits) qui seront autorises pour un sujet
sur un objet
Le systme a pour rle de vrifier que le sujet a le droit d'excuter l'opration sur l'objet.
32/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
33/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
droits propritaire
Propritaire
Groupe
.
34/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
chgrp :
chmod :
umask :
La commande chown
La commande chown permet de changer le propritaire d'un fichier et/ou d'un rpertoire et rcursivement
ce qu'il contient
La syntaxe :
La commande chgrp
La commande chgrp permet de changer le groupe d'un fichier et/ou d'un rpertoire et rcursivement ce
qu'il contient
La syntaxe :
Conditions : tre le propritaire du fichier et tre membre du groupe auquel on veut donner le fichier
.
35/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
La commande chmod
La commande chmod permet de changer les droits sur les fichiers
Syntaxe : chmod
action droits
Personne
u : l'utilisateur propritaire
g : le groupe propritaire
o : les autres
a : tous les utilisateurs
Action
+ : ajouter
- : supprimer
= : initialiser
Droit
r : lecture
w : criture
x : excution
Exemple :
u+rwx :
og-w :
a=rx :
g=rwx :
36/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
Binaire
000
001
010
011
100
101
110
111
Octal
0
1
2
3
4
5
6
7
Exemples
700 : reprsente les droits rwx-----751 : reprsente les droits rwxr-x--x
640 : reprsente les droits rw-r-----
37/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
38/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
RepertoireUn
fichierUn
fichierUn
39/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers
La commande umask
La commande umask
permet de spcifier des droits par dfaut lors de la cration des fichiers
utilise des masques sous forme numrique octale
sans paramtre : indique le masque courant
avec le masque en paramtre : modifie le masque courant
les droits obtenus sont le complmentaire de ceux indiqus par le masque
Exemple :
Droits
Masque
Droits obtenus
777
rwxrwxrwx
777
rwxrwxrwx
022
----w--w-
227
-w--w-rwx
755
rwxr-xr-x
550
r-xr-x---
40/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Introduction bash
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
41/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Introduction bash
42/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Introduction bash
Variables d'environnement
Elles sont instancies lorsqu'un Shell est excut par le systme
Ce sont des variables dynamiques utilises par les diffrents processus d'un systme d'exploitation
Elles donnent des informations sur le systme, la machine et l'utilisateur, entre autres
La commande set affiche l'cran toutes les variables d'environnement pour le Shell
VARIABLE=VALEUR : donne une valeur une variable
export VARIABLE : dfinit VARIABLE comme une variable d'environnement
echo $VARIABLE : affiche la valeur de la variable
43/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Introduction bash
Entre standard
Sortie standard
Erreur standard
attache au clavier
attache l'cran
attache l'cran
numro de descripteur 0
numro de descripteur 1
numro de descripteur 2
$ bc < calcul.dat
Pipe "|"
Brancher la sortie standard d'une commande l'entre standard d'une autre commande
Exemple : $
44/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Introduction bash
pwd
45/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Systme Unix
Introduction au systme Unix
Commandes de base du Shell
Systme de gestion de chiers
Programmation Shell
Introduction bash
Les scripts Shell
46/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Scripts
Les scripts sont des programmes crits dans un langage interprt, par exemple le langage du Shell
Un script peut tre une simple liste de commandes
La premire ligne du script doit prciser l'interprteur utilis, elle commence par les deux caractres #!,
suivis du chemin de l'interprteur.
Exemple :
#!/bin/bash
# liste
echo "Contenu du repertoire courant"
ls -l
echo "-----------------------------"
47/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Variables
Les variables du Shell sont des symboles auxquels on affecte des valeurs
Une variable est identifie par son nom
Le contenu de la variable est identifi par le symbole $ plac devant le nom
Exemple : Affichage en utilisant la commande echo
$ VARIABLE=VALEUR
$ echo $VARIABLE
VALEUR
Substitution: variables
Bash ralisera la substitution du contenu d'une variable lorsqu'il rencontre $ suivi d'un nom de variable
Deux comportements possibles :
Substitution vide : La variable n'est pas dfinie ou la variable est dfinie mais son contenu est vide
Substitution du contenu : La variable est dfinie et son contenu est non nul
Exemple 2 :
Exemple 1 :
$ MSG1="Jean est un "
$ MSG2="chien fort rput"
$ echo "$MSG1 $METIER $MSG2"
Jean est un chien fort rput
48/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Substitution: commandes
Bash est en mesure de substituer le rsultat d'une ligne de commandes UNIX
Le symbole impliqu dans ce genre de substitution est l'accent grave ( `)
Exemple :
$ echo pwd
pwd
$ echo `pwd`
/Users/Hicham/Desktop
$ echo "Mon rpertoire de travail est: `pwd`"
Mon rpertoire de travail est: /Users/Hicham/Desktop
Il est possible d'assigner le rsultat d'une ligne de commande UNIX une variable
Exemple :
$ REPERTOIRE=`pwd`
$ JESUIS=`who am i`
$ MACHINE=`hostname`
$ echo -e "Utilisateur: $JESUIS\n Rpertoire de travail: $REPERTOIRE\n\
> Machine: $MACHINE"
Utilisateur: Hicham ttys000 Feb 24 22:46
Rpertoire de travail: /Users/Hicham/Desktop
Machine: MacBookPro.local
49/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
& TATA"
50/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Paramtres de Bash
Paramtres de position :
Dans un programme Bash, le contenu de ces paramtres de position est reprsent par :
$9
51/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Lecture et afchage
La commande read ralise la lecture partir de l'entre standard :
Lecture de l'entre standard et placer les donnes dans les variables var1,
var2 et var3.
La sparation des donnes d'entre en champs est ralise par Bash l'aide de la variable IFS (Internal Field
Separator)
Exemple : voici une-ligne de donnes (Il existe 4 champs)
La lecture est ralise partir de l'entre standard
Les donnes lues sont places dans trois variables (REPERTOIRE1, REPERTOIRE2 et REPERTOIRE3)
Le programme termin son excution par l'affichage des donnes lues
52/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
53/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Commandes de test :
test, [ ]
vrai si :
fic existe
fic existe et est un rpertoire
fic existe et est un fichier ordinaire
fic existe et est un lien symbolique
fic existe et est non vide
fic existe et est autoris en lecture
fic existe et est autoris en criture
fic existe et est autoris en excution
les deux chanes sont identiques
les deux chanes sont diffrentes
54/90
vrai si :
n1 = n2
n1 n2
n1 n2
n1 n2
n1 < n2
n1 > n2
exp1 est fausse
exp1 et exp2 vraies
exp1 ou exp2 est vraie
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Branchement conditionnel :
if-then-elif-else-fi
Syntaxe
if liste-commandes-1
then liste-commandes-2
elif liste-commandes-3 autant de fois que ncessaire
else liste-commandes-4 si ncessaire
fi
Exemple 2
#!/bin/bash
if [ -d toto ] ; then
echo "toto est un rpertoire"
elif [ -h toto ] ; then
echo "toto est un lien symbolique"
else
echo "autre que rpertoire ou lien"
fi
#!/bin/bash
if ls toto > /dev/null 2>&1
then
echo "le fichier toto existe"
else
echo "le fichier toto n'existe pas"
fi
55/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Branchement conditionnel :
if-then-elif-else-fi
: Exemple 3
#!/bin/bash
# Mot secret
#
# Ce programme demande l'utilisateur de deviner un mot.
SECRET_WORD="SMI"
echo "Votre nom ?"
read NAME
echo
echo "Bonjour $NAME. Devinez un mot."
echo -e "Vous avez le choix entre : SMA, SMI et SMP : \c"
read GUESS
if [ $GUESS=$SECRET_WORD ]
then
echo "Congratulations !"
fi
56/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Branchement conditionnel :
case-esac
Syntaxe
case expression in
motif ) liste-commandes-1 ;;
*) liste-commandes-2 ;;
esac
autant de fois
echo
echo
echo
echo
"affirmatif" ;;
"ngatif" ;;
"dcide-toi" ;;
"quelle rponse!" ;;
57/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
case-esac
: Exemple 2
#!/bin/bash
# traiter les options d'une commande ; utiliser case esac pour traiter les options
if [ $# = 0 ]
then
echo "Usage : casesac t q l NomFich"
exit 1
fi
for option
do
case "$option" in
-t) echo "option t recu" ;;
-q) echo "option q recu" ;;
-l) echo "option l recu" ;;
[!-]*) if [ -f $option ]
then
echo "fichier $option trouve"
else
echo "fichier $option introuvable"
fi
;;
*) echo "option inconnue $option recontree"
esac
.
. . . . . . . . . . . . . .
.
done
.
58/90
Systmes d'exploitation I
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Boucle for-do-done
Syntaxe
for variable in liste-de-mots
do
liste-commandes
done
La variable prend successivement les valeurs de la liste de mots, et pour chaque valeur, liste-commandes
est excute
Exemple 1
Exemple 2
#!/bin/bash
#!/bin/bash
for i in ~/Desktop/*.pdf
do
echo $i
done
59/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Exemple 3 (Suite)
if [ -0 $file ] # check ownership
then
echo "Propritaire de $file"
else
echo "Pas propritaire de $file"
fi
if [ -r $file ] # check permissions
then
echo "Droit de lecture sur $file"
fi
if [ -w $file]
then
echo "Droit d'criture sur $file"
fi
if [ -x $file ]
then
echo "Droit d'excution sur $file"
fi
done
60/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
L'instruction select-do-done
Syntaxe
select variable in liste-de-mots
do
liste-commandes
done
Exemple 2
#!/bin/bash
echo "Quel est votre OS prfr ?"
select var in "Linux" "Mac OS X" "Other"
do
echo "Vous avez slectionn $var"
if [ "$var" = "Other" ]
then
break
fi
done
#!/bin/bash
PS3="Que voulez vous ? "
select ch in "1er" "2eme" "Abandon" ; do
case $ch in
1) echo "Cst du $ch choix" ;;
2) echo "Que du $ch choix" ;;
3) echo "On abandonne ..." ; break ;;
*) echo "Choix invalide" ;;
esac
done
.
61/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Boucle while-do-done
Syntaxe
while liste-commandes-1
do
liste-commandes-2
done
La valeur teste par la commande while est l'tat de sortie de la dernire commande de
liste-commandes-1
Si l'tat de sortie est 0, alors le Shell excute liste-commandes-2 puis recommence la boucle
Exemple 1
Exemple 2
#!/bin/bash
echo -e "Devinez le mot secret : SMI, SMA, SMP : \c"
read GUESS
while [ $GUESS != "SMI" ]
do
echo -e "Ce n\st pas $GUESS, devinez : \c"
read GUESS
done
echo "Bravo"
#!/bin/bash
compteur=5
while [ $compt -ge 0 ]
do
echo $compt
compt=`expr $compt - 1`
done
62/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Boucle until-do-done
Syntaxe
until liste-commandes-1
do
liste-commandes-2
done
Exemple 1
Exemple 2
#!/bin/bash
echo -e "Devinez le mot secret : SMI, SMA, SMP : \c"
read GUESS
until [ $GUESS = "SMI" ]
do
echo "Ce n\st pas $GUESS, devinez encore : \c"
read GUESS
done
echo "Bravo."
#!/bin/bash
compt=5
until [ $compt -lt 0 ]
do
echo $compt
compt=`expr $compt - 1`
done
63/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
64/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Exemple 2 (suite)
#!/bin/sh
repertoire () {
echo "Entrer un nom de repertoire: \c"
read REPERTOIRE
if [ -d "$REPERTOIRE" ]
then
return 0 # repertoire existe
else
return 101 # repertoire inexistant
fi
}
gestion_erreur () {
case $ERRNO in
0) ;;
# pas d'erreur
101) echo "Rpertoire inexistant" ;;
*) echo "Code d'erreur inconnu"
exit 1 ;;
esac
}
# Programme principal
ERRNO=123
while [ $ERRNO -ne 0 ]
do
# statut de sortie de repertoire ()
# assign ERRNO
repertoire; ERRNO=$?
# invoquer le gestionnaire d'erreur
gestion_erreur
done
65/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Rsultat de l'excution
#!/bin/bash
# Nom fichier : exemple_arobase.sh
echo "Utilisation de \$*"
for OPTION in "$*"
do
echo "Itration : $OPTION"
done
66/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Exemple 1 (getopts)
Rsultat de l'excution
#!/bin/sh
while getopts lq OPT
do
case "$OPT" in
l) echo "OPTION $OPT reue" ;;
q) echo "OPTION $OPT reue" ;;
?) echo "Usage: install [-lq]" ; exit 1 ;;
esac
echo "Valeur de \$OPTIND: $OPTIND"
done
$ install_lq -l
OPTION l reue
Valeur de $OPTIND: 2
$ install_lq -l -q
OPTION l reue
Valeur de $OPTIND: 2
OPTION q reue
Valeur de $OPTIND: 3
$ install_lq -x
./install_lq : option incorrecte -- x
Usage: install [-lq]
.
67/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Exemple 2 (getopts)
#!/bin/sh
while getopts l:q OPT
do
case "$OPT" in
l) OPTION="$OPT"
LOGARG="$OPTARG" ; echo "OPTION $OPT reue; son argument est $LOGARG" ;;
q) OPTION="$OPT" ; echo "OPTION $OPT reue" ;;
?) echo "Option invalide dtecte"
echo "Usage: install [-l logfile -q] [nom_repertoire]"
exit 1 ;;
esac
echo "Valeur de \$OPTIND: $OPTIND"
done
# Chercher le paramtre nom_repertoire
shift `expr $OPTIND - 1`
if [ "$1" ]
then
REPERTOIRE="$1"
echo "Rpertoire d'installation: $REPERTOIRE"
fi
68/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .
Systmes d'exploitation I
Programmation Shell
Les scripts Shell
Exemple
#!/bin/sh
# settest : montrer l'utilisation des options de set pour le dbogage
# Utiliser l'option v (affiche les commandes et leur argument)
set -x
pwd
ls -l
echo `who`
69/90
. . . .
Systmes d'exploitation I
. . . .
. . . .
. . . .
. . . .
. . . .