Vous êtes sur la page 1sur 69

Facult des Sciences

Rabat

Dpartement d'Informatique

Systmes d'exploitation I
Pr. Hicham Laanaya hicham.laanaya@gmail.com

20142015

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Plan du cours
1

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk

2/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

3/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel

Architecture simplie d'un ordinateur


Une unit pour effectuer les traitements, galement appele unit centrale ou processeur,
Une unit pour contenir les programmes excuter qui est le lieu de travail dans un ordinateur appele
mmoire centrale,
Des priphriques de stockage permanent pour y enregistrer les travaux effectus en mmoire centrale tel
que le disque dur,
Des dispositifs pour entrer et rcuprer des donnes appels priphriques d'entre- sortie : un cran, une
souris, un clavier, un lecteur de disquettes et un lecteur de CD- ROM ou DVD-ROM

Bus

UC

Disque dur

Priphrique de stockage

MC
Priphrique d'entre/sortie
Carte mre

Figure: Architecture simplifie d'un ordinateur


.

4/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Rappels sur le matriel

L'unit centrale ou microprocesseur


L'unit centrale est un circuit intgr qui ralise les traitements et les dcisions, elle se compose :
d'une unit de commande et de contrle UCC : elle recherche les instructions, les dcode et en supervise
leur excution par l'UAL.
d'une unit arithmtique et logique UAL : elle ralise les traitements qu'ils soient arithmtiques ou logiques.
de registres : ils sont des zones mmoires internes au processeur destines accueillir les donnes, les
instructions et les rsultats.
d'une horloge qui rythme le processeur : chaque top d'horloge le processeur effectue une instruction, ainsi
plus l'horloge a une frquence leve, plus le processeur effectue d'instructions par seconde (MIPS: Millions
d'instruction par seconde). Par exemple un ordinateur ayant une frquence de 1 GHz (1000 MHz) effectue
1000 millions d'instructions par seconde.
d'un bus interne qui relie ces units aux registres.
De nos jours d'autres composants sont intgrs au processeur tels que :
Une unit flottante pour le calcul des oprations sur les nombres rels.
La mmoire cache : c'est une mmoire de petite taille, accs plus rapide que la mmoire principale. Elle
permet au processeur de se "rappeler" les oprations dj effectues auparavant. La taille de la mmoire
cache est gnralement de l'ordre de quelques centaines de KO. Ce type de mmoire rsidait sur la carte
mre, sur les ordinateurs rcents ce type de mmoire est directement intgr dans le processeur.
Les units de gestion mmoire servent convertir des adresses logiques en des adresses relles situes en
mmoire.
.

6/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Notions de systmes d'exploitation

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

7/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Notions de systmes d'exploitation

Notions de systmes d'exploitation


Le systme d'exploitation est un gestionnaire de ressources :
il contrle l'accs toutes les ressources de la machine,
l'attribution de ces ressources aux diffrents utilisateurs,
la libration de ces ressources lorsqu'elles ne sont plus utilises,
tous les priphriques comme la mmoire, le disque dur ou les imprimantes sont des ressources, le
processeur galement est une ressource.

8/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Les principaux systmes d'exploitation

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

9/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Les principaux systmes d'exploitation

Les principaux systmes d'exploitation


MS-DOS est le plus connu des premiers systmes d'exploitation pour PC
Il est mono-utilisateur et mono-tche. On a du greffer des couches logicielles pour rpondre aux
volutions matrielles et aux demandes des utilisateurs
MS-DOS a t rapidement supplant par les systmes Windows
Mac OS : C'est le systme d'exploitation dApple
Il a t livr pour le Macintosh en 1984
La version actuelle est la X (prononcer dix). Mac OS X se distingue par un noyau Darwin qui est un
open source
Mac OS est un des principaux rivaux des Windows
Unix tant distribu gratuitement, il a donn naissance de nombreuses versions :
Les versions les plus connues Unix SYSTEM V (volution de la version initiale d'AT&T et Bell) et
Unix BSD
Les principaux Unix du march sur Intel sont : Open Server et Unixware de SCO (Santa Cruz
Operation), Solaris (Sun Microsystems), BSD (Berkeley),
Trois Unix dominent le monde des serveurs : HP/UX, Sun Solaris, IBM AIX
Linux a pris des parts de march aux Unix, Novell Netware et Windows NT-2000 serveur
Il s'est impos ds la fin du 20me sicle. Linux est multi-utilisateurs, multi-tches, stable et gratuit
Principales distributions de Linux : RedHat, Debian, Caldera, Ubuntu,
.

10/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Introduction gnrale sur les systmes d'exploitation
Les principaux systmes d'exploitation

Les principaux systmes d'exploitation (suite)


La famille des Windows :
Microsoft propose en 1992 Windows 3.10 et Windows pour Workgroups 3.11 dont les mots cls
sont Multifentres et Multitches coopratif. En 1993, on voit apparatre la premire version de
Windows NT 3.1 suivie en 1994 par NT 3.5
L'anne 1995, verra la sortie du fort clbre Windows 95
En 1996, Windows NT 4 avec deux versions station de travail et Serveur. Ensuite,
Windows Terminal Server : un systme qui simule un environnement multi-utilisateurs et prend en
charge la connexion de plusieurs terminaux
En 1998 Windows 98
En 2000, Microsoft commercialise Windows 2000 professionnel et serveur, Windows Millenium,
suivi de Windows XP familial et serveur
Windows 2003 (initialement baptis .NET) sort en 2003
VISTA, Windows Seven, Windows 8

11/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Introduction au systme Unix

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

12/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Des Unix libres


Linux sur plate-forme Intel, Sparc, Alpha, Mac,
FreeBSD sur plate-forme Intel, Alpha, PC-98
OpenBSD galement multi-plate-forme
.

13/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Commandes de base du Shell

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

16/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Commandes de base du Shell

Commandes de base du Shell


Un Shell
est un interprteur de commande en mode texte
peut s'utiliser en mode interactif ou pour excuter des programmes crits dans le langage de programmation
du Shell (appels scripts Shell)
En mode interactif, le Shell
affiche une invite en dbut de ligne (prompt)
La commande est interprte et excute aprs la frappe de la touche "Entre"

Invite affich par


l'interprteur de commande

Terminal sous Mac OS X

17/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Commandes de base du Shell

Format des commandes


Le format des commandes suit une convention bien tablie
commande [-options] [paramtres]

Les options et les paramtres sont parfois facultatifs.


Exemple :

cp -i /home/profs/prof1/Hello.c /home/etudiants/etudiant1

cp :

commande qui va lancer la fonction de copie

l'option -i : permet de contrler certains aspects du comportement de la commande


/home/profs/prof1/Hello.c :

Il s'agit de la source ou le fichier que vous souhaitez copier

/home/etudiants/etudiant1 :

Il s'agit de la destination ou l'emplacement de la copie

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 :
*:

remplac par n'importe quelle suite de caractres

?:

remplac par un seul caractre quelconque

[ ] : remplac par l'un des caractres mentionns entre les crochets.


- : [a-z] spcifie donc l'ensemble des lettres minuscules
.

18/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

On peut spcifier un intervalle avec


.

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

19/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Hirarchie du systme de chiers


/

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Les diffrents types de chiers


Les fichiers ordinaires (rguliers) sont une suite d'octets sans structure
Les rpertoires contiennent des informations sur les fichiers et les sous-rpertoires
Les liens symboliques sont une catgorie particulire de fichiers (qui contiennent l'emplacement du fichier
prendre en compte)
Les priphriques sont vus comme des fichiers spciaux du rpertoire /dev
Les tubes nomms sont des fichiers sur disque grs comme un tube (pipe) entre deux processus changeant
des donnes

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Le nom des chiers


Le nom d'un fichier doit permettre de l'identifier dans un ensemble de fichiers
Le nom est compos de caractres
Le nom est souvent compos de deux parties :
i la base ; et
ii l'extension qui se trouve aprs le caractre '.'
L'extension d'un nom de fichier dsigne la nature de son contenu (texte, image, son, )

Caractres acceptables pour les noms de chiers


Caractres
AZ
az
09
_,
.

Signification
Lettres majuscules
Lettres minuscules
Chiffres
Caractre soulign et caractre virgule
Caractre point

UNIX est un systme qui distingue les caractres majuscules et minuscules


Ne pas utiliser le caractre espace comme nom de fichier ou rpertoire !!
.

22/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Les chemins d'accs


Pour identifier un fichier dans l'arborescence on indique le nom complet du fichier
Le nom complet du fichier est reprsent par :
Le chemin compos de rpertoires qui conduit de la racine de l'arborescence du systme de fichiers
jusqu'au rpertoire qui contient le fichier
Chaque rpertoire est distingu des autres par un symbole sparateur "/"
le nom du fichier

Sparateur

/home/etudiant1/data/Fichier.txt
Chemin

Nom

23/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Les chemins d'accs (suite)


On distingue deux expressions d'un chemin :
Le chemin d'accs absolu (chemin absolu)
Le chemin d'accs relatif (chemin relatif)
Le chemin absolu commence par le symbole sparateur, il exprime le chemin complet partir de la racine
de l'arborescence
Le chemin relatif commence par un autre caractre que le caractre sparateur. Il indique un chemin partir
du rpertoire de travail courant
Exemple : Le rpertoire courant est :

/var/log

Le chemin absolu pour dsigner le fichier fichier.txt : est /home/etd/etudiant1/fichier.txt


Le chemin relatif est :

../../home/etd/etudiant1/fichier.txt

".." dsigne le rpertoire parent, "." dsigne le rpertoire courant

usr

etc

bash

vmlinuz

home

prof1

lib

var

etd

log

etudiant1

acces.dat

prof

fichier.txt

Hello.c

24/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Les chemins d'accs : Exercice


Dans la hirarchie prcdente, exprimez les chemins suivants :
1 absolu pour prof1
2 absolu pour etc
3 absolu pour prof
4 relatif log pour acces.dat
5 relatif prof pour acces.dat
6 relatif etudiant1 pour acces.dat

usr

etc

bash

vmlinuz

home

lib

log

prof

etd

prof1

etudiant1

fichier.txt

var

acces.dat

Hello.c

25/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Les chemins d'accs : Correction


Dans la hirarchie prcdente, exprimez les chemins suivants :
1 absolu pour prof1 :
2 absolu pour etc :

/home/prof/prof1

/etc

3 absolu pour prof :

/home/prof

4 relatif log pour acces.dat :

acces.dat

5 relatif prof pour acces.dat :

../../var/log/acces.dat

6 relatif etudiant1 pour 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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Quelques commandes d'accs aux chiers


Commande
cat
stat
ls
rm
touch

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)

Quelques commandes d'accs aux rpertoires


Commande
ls

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Quelques commandes de manipulation du systme de chiers


Commande
cp

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Notion de liens physiques


Un mme fichier peut avoir donc plusieurs noms
Il y a plusieurs liens physiques sur le fichier

Notion de liens symboliques


Un lien symbolique est un fichier (de type lien) qui contient le chemin et le nom d'un autre fichier
Les accs un lien sont donc des redirections vers un autre fichier : les commandes qui manipulent des liens
manipulent en fait le fichier dont le nom est stock dans le lien
Un lien se comporte comme un raccourci (alias) vers un autre fichier
Le contenu d'un lien est :
soit un chemin absolu
soit un chemin relatif (qui doit tre valide depuis le rpertoire dans lequel se trouve le lien !)

29/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Notion de Liens : Rsum


Les liens physiques sont plusieurs entres de rpertoires du mme i-nud (ce sont donc des fichiers
rguliers)
Les liens symboliques ont chacun leur propre i-nud ; leur contenu dsigne un mme fichier rgulier (ils
sont du type liens)
La commande ln permet de crer des liens :

ln [options] <destination> <nom_du_lien>

sans option : cration de liens physiques


avec l'option -s : cration de liens symboliques

30/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Notions d'utilisateur et de groupe


Pour pouvoir accder au systme de fichier, l'utilisateur doit tre connect
Pour ce connecter, l'utilisateur doit saisir son login et le mot de passe associ
A chaque login le systme fait correspondre un numro d'identification uid (User IDentifier)
Chaque utilisateur appartient au moins un groupe d'utilisateurs
A chaque groupe d'utilisateur le systme fait correspondre un numro d'identification gid (Group IDentifier)
Ces informations sont stockes dans des fichiers d'administration
/etc/passwd contient les informations relatives aux utilisateurs (login, mot de passe crypt, uid,
gid, nom complet, rpertoire de travail au login, commande excute au login) ; et
/etc/group contient les informations relatives aux groupes (nom, mot de passe, gid, liste des
membres du groupe)
Un utilisateur peut appartenir plusieurs groupes.

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Notions de scurit
Concept de base
sujet
objet
opration

Utilisateur ou Processus qui veut excuter une opration ;


Fichier sur lequel on veut excuter une opration ; et enfin
Action que l'on veut excuter.

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Scurit sous Unix


Le systme Unix associe des droits chaque fichier (rgles). Ces droits sont fonctions du sujet
Un fichier appartient un utilisateur et un groupe
Unix distingue le sujet comme tant :
1 le propritaire de l'objet (fichier)
2 membre du groupe propritaire de l'objet (fichier)
3 les autres
Les oprations pour les fichiers rguliers :
r : droit de lecture
w : droit de modification et de suppression
x : droit d'excution
Les oprations pour les rpertoires :
r : droit de lister le contenu du rpertoire
w : droit de modification et de suppression du contenu du rpertoire
x : droit d'accs comme rpertoire de travail sur le rpertoire

33/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Scurit sous Unix (suite)


Pour chaque fichier, la rgle va indiquer les oprations acceptes en fonction de la catgorie de sujet
(propritaire, groupe, autre)
La commande ls permet de visualiser les droits. Elle prsente pour chaque catgorie de gauche droite les
droits :
i pour l'utilisateur propritaire du fichier
ii pour l'utilisateur membre du groupe propritaire du fichier
iii pour les autres utilisateurs ;
Chaque droit est dsign par une lettre :
r : signifie que le droit en lecture est accord
w : droit en criture
x : droit d'excution
- : le droit correspondant n'est pas accord
droits groupe droits pour les autres

droits propritaire
Propritaire

Groupe
.

34/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

Commandes pour modier les rgles


Des commandes permettent de modifier les rgles de droits sur les fichiers :
chown :

permet de changer le propritaire (utilisateur et groupe)

chgrp :

permet de changer le groupe propritaire

chmod :

permet de changer les droits

umask :

permet d'indiquer les droits la cration

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 :

chown [OPTION][OWNER][:[GROUP]] FILE

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 :

chgrp [OPTION][GROUP]] FILE

Conditions : tre le propritaire du fichier et tre membre du groupe auquel on veut donner le fichier
.

35/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

[options] mode fichier

options : -R : modifier rcursivement les autorisations d'un rpertoire et son contenu


Le mode permet de spcifier les droits :
de manire symbolique (en utilisant les lettres r,w,x et les symboles +,-,=)
de manire numrique (en octal base 8)
Le mode est spcifi par : personne

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 :

ajouter tous les droits au propritaire

og-w :

enlever le droit d'criture aux autres

a=rx :

donner le droit de lecture et excution tous (propritaire, groupe et autres)

g=rwx :

accorder tous les droits au groupe


.

36/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

La commande chmod (suite)


Le mode est spcifi par un nombre en octal (base 8), dont les chiffres reprsentent (dans l'ordre de gauche
droite) :
les droits pour l'utilisateur propritaire du fichier
les droits pour le groupe propritaire du fichier
les droits pour tous les autres
Droits
----x
-w-wx
r-r-x
rwrwx

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

La commande chmod : Exercices


1 Interdire la lecture et l'accs au rpertoire RepertoireUn aux utilisateurs ne faisant pas partie du groupe
staff

2 Donner les droits d'criture au groupe sur le fichier fichierUn


3 Donner le droit d'excution sur le fichier fichierUn l'utilisateur propritaire
4 Prvoir les droits affichs par la commande ls

-l aprs excution de ces commandes

5 Rcrire les commandes avec l'utilisation numrique de la commande chmod

38/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Systme Unix
Systme de gestion de chiers

La commande chmod : Correction


Mode symbolique
1 chmod o-rx RepertoireUn
2 chmod g+w fichierUn
3 chmod u+x fichierUn
Mode numrique
1 chmod 750
2 chmod 664
3 chmod 764

RepertoireUn
fichierUn
fichierUn

39/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Introduction bash

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

41/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Introduction bash

Les diffrents Shells


Il existe plusieurs Shells UNIX :
C-Shell (csh ou tcsh)
Bourne Shell (sh ou bash)
Korn Shell (ksh), ....
L'interprtation des commandes simples est semblable pour tous
L'utilisation pour crire des scripts diffre beaucoup (dfinition des variables, structures de contrle, etc)

Initialisation d'un Shell


Lors de leur dmarrage,
les Shell excutent des fichiers de configuration, qui peuvent contenir des commandes quelconques et sont
gnralement utiliss pour dfinir des variables d'environnement et des alias
csh excute le fichier ~/.cshrc (le "rc" signifie run command)
tcsh excute ~/.cshrc
sh excute ~/.profile
bash excute ~/.bash_profile ou dfaut ~/.profile
les fichiers d'initialisation sont "invisibles"
.

42/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Redirections des entres/sorties


Il est possible de rediriger ces trois flux :
Redirection de la sortie standard :

$ echo bonjour > test.txt

Concatnation pour prserver le contenu du fichier de sortie :

$ cat < toto.txt >> FichierSortie

Redirection de l'erreur standard :

$ ls abdnkjf 2> erreur.txt

Redirection de l'entre standard :

$ bc < calcul.dat

Redirection de l'entre et de la sortie standard :


Exemple : $

$ bc < calcul.dat > resultat.txt

ls abdnkjf > sortie.txt 2>&1 :

La sortie de ls est enregistre dans le fichier


L'erreur standard est redirige la sortie standard. Donc, l'erreur standard est galement
redirige au fichier sortie.txt
sortie.txt.

Pipe "|"
Brancher la sortie standard d'une commande l'entre standard d'une autre commande
Exemple : $

ls -l | sort -r (affiche le contenu du rpertoire courant tri l'envers)


.

44/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Introduction bash

Regroupement des commandes


Pour lancer l'excution squentielle de plusieurs commandes sur la mme ligne de commande, il suffit de les
sparer par un caractre ;
Exemple : $

cd /tmp ; pwd; echo bonjour; cd ; pwd

Excution squentielle d'une ligne de commandes par regroupement


(cmd1 ; cmd2) ; cmd3
(cmd1 ; cmd2) & cmd3
Les commandes regroups sont excutes dans un interprteur enfant (subshell)
Exemple : pwd ; (cd ..; pwd; cp user.txt test.txt; ls -l test.txt);

pwd

Contrle des tches


le Shell attend la fin de l'excution d'une commande avant d'afficher le prompt suivant
L'excution en arrire-plan permet un utilisateur de lancer une commande et de rcuprer immdiatement
la main pour lancer "en parallle" la commande suivante (paralllisme logique)
On utilise le caractre & pour lancer une commande en arrire-plan
Exemple : $

sleep 100 &

La commande jobs affiche les commandes lances en arrire plan.


.

45/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Introduction gnrale sur les systmes d'exploitation


Rappels sur le matriel
Notions de 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

Filtre programmable awk


Introduction
Expressions rgulires et commande egrep
Filtre programmable awk
.

46/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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 "-----------------------------"

La deuxime ligne est un commentaire


Le fichier contenant ces commandes doit tre rendu excutable :

$ chmod u+x liste

47/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

$ MSG1="Jean est un "


$ MSG2="chien fort rput"
$ METIER="dresseur de"
$ echo "$MSG1 $METIER $MSG2"
Jean est un dresseur de chien fort rput
.

48/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Neutralisation des caractres


Certains caractres ont des significations particulires pour l'interprteur de commandes
Par exemple : &, (, ), *, !, {, }, etc.
Sans un mcanisme d'chappement, ces caractres spciaux seront interprts par Bash
Les commandes et programmes qui utilisent ces caractres spciaux ne pourront pas s'excuter correctement
D'o la ncessit de neutraliser la signification particulire de ces caractres spciaux pour Bash
Exemple : Nous dsirons afficher la chane de caractres "TOTO

& TATA"

$ echo TOTO & TATA


[1] 2527
TOTO
-bash: TATA: command not found
$ echo TOTO \& TATA
TOTO & TATA

Donc, le symbole \permet la neutralisation du caractre qui le suit


Nous pouvons neutraliser la signification spciale du caractre Espace par les symboles "" et ' '
Le guillemet : limine la signification spciale du caractre Espace mais permet la substitution des variables
et commandes
L'apostrophe : limine la signification spciale du caractre Espace et empche la substitution des variables et
commandes
.

50/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Paramtres de Bash
Paramtres de position :

$ cmd par1 par2 par3 par4

Dans un programme Bash, le contenu de ces paramtres de position est reprsent par :

$1, $2, $3 jusqu'

$9

Le nom du fichier (cmd) est reprsent par $0

Exemple de paramtres de position l'aide d'un programme Bash


#!/bin/bash
# Nom du fichier param
# param : montrer l'utilisation des parametres Bourne shell
# Lancer le fichier de commande : param -A -B -C
echo
echo
echo
echo
echo
echo
echo
echo

"Numero PID de l'interpreteur de commande: $$"


"Nom du fichier de commande: $0"
"Nombre de parametres: $#"
"Parametre 1: $1"
"Parametre 2: $2"
"Parametre 3: $3"
"Parametre 4: $4"
"Toute la ligne de commande: $@"
.

51/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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 :

$ read var1 var2 var3

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

Exemple d'utilisation de read


#!/bin/bash
# nom du fichier: lecture
# lecture : montrer comment lire des donnes partir de l'entre standard
echo
read
echo
echo

-e "Les repertoires de l'installation? \c"


REPERTOIRE1 REPERTOIRE2 REPERTOIRE3
"Merci !"
-e "L'entree lue : $REPERTOIRE1\n $REPERTOIRE2\n $REPERTOIRE3"
.

52/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Dcalage de paramtres : shift


La commande shift agit sur les paramtres de position du Bash
A chaque emploi de shift
le paramtre $1 prcdent est perdu
$1 est supprim de $* et $@
$# est dcrment de 1
L'emploi de shift ncessite que le Shell script ait au moins un paramtre

Exemple d'utilisation de shift


#!/bin/bash
echo "$# : arg1
shift
echo "$# : arg1
shift
echo "$# : arg1
shift
echo "$# : arg1
shift
exit 0

= $1, arg2 = $2; total : $@"


= $1, arg2 = $2; total : $@"
= $1, arg2 = $2; total : $@"
= $1, arg2 = $2; total : $@"

53/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Commandes de test :

test, [ ]

Permet d'valuer une expression.


Si vrai, renvoie 0 (true), sinon, renvoie 1 (false)
S'il n'y a pas d'expression, renvoie 1
test expression est quivalent [ expression ]

Test sur chiers, rpertoires et chanes


Expression
-e fic
-d fic
-f fic
-h fic
-s fic
-r fic
-w fic
-x fic
ch1 = ch2
ch1 != ch2

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

Test sur nombres et oprations logiques sur les


expressions
Expression
n1 eq n2
n1 -ne n2
n1 -le n2
n1 -ge n2
n1 -lt n2
n1 -gt n2
! exp1
exp1 -a exp2
exp1 -o exp2

54/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

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

La condition (boolenne) est en gnral le code de retour d'une commande UNIX


Le code de retour de la commande dtermine le test if :
Code de retour valant zro : Le test if est vrai.
Code de retour non nul : Le test if est faux
Exemple 1

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Excute la liste-commandes suivant le motif (pattern en anglais) reconnu


Le motif reconnaitre peut s'exprimer sous forme d'expression rationnelle (ou rgulire) utilisant les
mta-caractres : * ? [ ] Exemple 1
#!/bin/bash
case $1 in
[Yy][eE][sS] | [oO][uU][iI])
[Nn][oO] | [Nn][Oo][Nn])
yesno)
*)
esac

echo
echo
echo
echo

"affirmatif" ;;
"ngatif" ;;
"dcide-toi" ;;
"quelle rponse!" ;;

57/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

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 un deux trois quatre cinq six


do
echo "Semestre $i"
done

for i in ~/Desktop/*.pdf
do
echo $i
done

59/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Boucle for-do-done : Exemple 3


#!/bin/bash
# Checkfile. Informations sur des fichiers
for file in $@
do
if [ -d $file ]
then # Test file type
echo "$file est un rpertoire"
elif [ -f $file ]
then
echo "$file est rgulier"
if [ -s $file ]
then
echo "$file n'est pas vide"
else
echo "$file est vide"
fi
else
echo "$file non trouv"
fi

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Permet l'utilisateur de slectionner une variable parmi une liste de mots.

liste-commandes est excute

L'instruction select gnre un menu partir de liste-de-mots et demande l'utilisateur de faire un


choix
Exemple 1

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Le Shell teste l'tat de sortie de liste-commandes-1


Si l'tat de sortie est 1, alors, liste-commandes-2 est excute puis la boucle est recommence

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Fonctions Bourne Shell


Nous pouvons rendre la programmation plus structure en utilisant des fonctions
La syntaxe est :
NomDeFonction ( ){
commandes
}

Dfinition des fonctions Bourne shell : au dbut du fichier de commande


Prend prsance sur les commandes systmes de mme nom
Peut avoir une valeur de retour :

exit n o n est une valeur numrique (=0 :

OK, 0 (et <256) : Erreur)

Exemple 1 : Fonctions Bourne Shell


#!/bin/bash
mafonction() {
echo "Celle-ci est mafonction"
}
# Code principal commence ici
echo "Appel de mafonction..."
mafonction
echo "Done."

64/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Exemple 2 : Fonctions Bourne 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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Diffrence entre "$@" et "$*"


Lorsque utilis entre guillemet, la variable $@ et la variable $* n'ont pas la mme signification
Pour "$@" l'interprteur de commandes substitue les paramtres de position en leur entourant par des
guillemets
Ce n'est pas le cas pour "$*"

Exemple : Diffrence entre "$@" et "$*"

Rsultat de l'excution

#!/bin/bash
# Nom fichier : exemple_arobase.sh
echo "Utilisation de \$*"
for OPTION in "$*"
do
echo "Itration : $OPTION"
done

$ ./exemple_arobase.sh un deux troix quatre


Utilisation de $*
Itration : un deux troix quatre
Utilisation de $@
Itration : un
Itration : deux
Itration : troix
Itration : quatre

echo "Utilisation de \$@"


for OPTION in "$@"
do
echo "Itration : $OPTION"
done

Le rsultat n'est pas le mme !


Pensez utiliser "$@" dans vos programmes Bash

66/90

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Dcodage des paramtres


Il existe une commande simple pour le dcodage systmatique des paramtres de position
Il s'agit de la commande getopts
La syntaxe de cette commande : getopts optstring name [arg ]
optstring reprsente les options reconnatre par getopts
name les options reconnues par getopts sont places dans cette variable
arg s'il existe, getopts va tenter d'extraire les options partir de cet argument

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .

Systmes d'exploitation I
Programmation Shell
Les scripts Shell

Dbogage de Script Shell


Pour simplifier la recherche des erreurs dans un programme Bourne Shell :
Utiliser la commande set pour activer les modes de dbogage
Les options disponibles sont :
-n : Lire les commandes mais ne pas les excuter (Vrifie les erreurs de syntaxe sans excuter le
script)
-v : Affiche les lignes lues du programme lors de son excution
-x : Afficher les commandes et les substitutions lors de leur excution

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

Pr. Hicham Laanaya hicham.laanaya@gmail.com

. . . .

Systmes d'exploitation I

. . . .

. . . .

. . . .

. . . .

. . . .