Vous êtes sur la page 1sur 50

Universit Ibn Tofail

Facult des Sciences


Dpartement Informatique

Systme dExploitation I
Filire SMI
Semestre 3

Auteur : Salma AZZOUZI


Anne Universitaire 2015-2016

SMI-S3

Cours : Systme Exploitation I

Sommaire
Chapitre 1 : Notions sur UNIX ........................................................................................... 4
1. Introduction ................................................................................................................ 4
2. Historique................................................................................................................... 4
3. Architecture du systme Unix .................................................................................... 5
3.1. LArchitecture du systme : ................................................................................ 5
3.2. LArchitecture du noyau ..................................................................................... 6
4. Arborescence des fichiers Unix ................................................................................. 7
4.1. Chemin d'accs un fichier ................................................................................. 8
4.2. Les rpertoires ..................................................................................................... 8
5. Les commandes Unix ............................................................................................... 12
5.1. Syntaxe des lignes de commande Unix ............................................................ 12
5.2. Commandes de manipulation des fichiers ........................................................ 13
5.3. Commandes de filtre en mode texte.................................................................. 15
5.4. Gestion des processus ....................................................................................... 17
5.5. Commandes diverses ........................................................................................ 17
Chapitre 2 : La programmation Shell................................................................................ 19
1. Pourquoi programmer en shell ? .............................................................................. 19
1.1. Niveau lexical : ................................................................................................. 19
1.2. Les sparateurs : ................................................................................................ 20
1.3. Les Mots : ......................................................................................................... 20
1.4. Les Caractres gnriques: ............................................................................... 20
1.5. Les Caractres spciaux : ................................................................................. 20
2. Le premier Programme : .......................................................................................... 24
3. Les commentaires .................................................................................................... 24
4. Les variables ............................................................................................................ 25
4.1. Les variables en Shell : ..................................................................................... 25
4.2. Les variables prdfinis : ................................................................................. 27
5. Les oprations .......................................................................................................... 27
6. Les tests .................................................................................................................... 28
6.1. Tests sur les chanes de caractres : .................................................................. 28
2015-2016
2

SMI-S3

Cours : Systme Exploitation I

6.2. Test des nombres............................................................................................... 29


6.3. Tests sur les fichiers : ........................................................................................ 29
7. L'excution conditionnelle ....................................................................................... 29
7.1. linsruction if hen fi .......................................................................................... 29
7.2. Linstruction Case ............................................................................................. 32
8. L'excution itrative ................................................................................................. 33
8.1. Linstruction While ........................................................................................... 33
9. Re-direction et structures de contrle ...................................................................... 34
10. Les fonctions .......................................................................................................... 34
TP1-Prise en main dUnix ............................................................................................ 36
TP2- Commandes de base dUnix ................................................................................ 39
TP3- Scripts en Shell Unix sh ....................................................................................... 44
Projet Unix SMI S3 2015-2016 : Agenda ......................................................................... 47
Quelques Rfrences ..................................................................................................... 50

2015-2016
3

SMI-S3

Cours : Systme Exploitation I

Chapitre 1 : Notions sur UNIX

1. Introduction
Pour qu'un ordinateur soit capable de faire fonctionner un programme
informatique (appel parfois application ou logiciel), la machine doit tre en mesure
d'effectuer un certain nombre d'oprations prparatoires afin d'assurer les changes entre
le processeur, la mmoire, et les ressources physiques (priphriques).
Un systme d'exploitation, est charg d'assurer la liaison entre les ressources
matrielles, l'utilisateur et les applications. Ainsi lorsqu'un programme dsire accder
une ressource matrielle, il ne lui est pas ncessaire d'envoyer des informations
spcifiques au priphrique, il lui suffit d'envoyer les informations au systme
d'exploitation, qui se charge de les transmettre au priphrique concern via son pilote.
Le systme Unix est un systme d'exploitation multi-utilisateurs, multi-tches,
ce qui signifie qu'il permet un ordinateur mono ou multi-processeurs de faire excuter
simultanment plusieurs programmes par un ou plusieurs utilisateurs. Il possde un ou
plusieurs interprteurs de commandes (shell) ainsi qu'un grand nombre de commandes et
de nombreux utilitaires (assembleur, compilateurs pour de nombreux langages,
traitements de texte, messagerie lectronique, ...). De plus il possde une grande
portabilit, ce qui signifie qu'il est possible de mettre en uvre un systme Unix sur la
quasi-totalit des plates-formes matrielles.
De nos jours les systmes Unix sont trs prsents dans les milieux professionnels
et universitaires grce leur grande stabilit, leur niveau de scurit lev et le respect
des grands standards, notamment en matire de rseau.
Le but de ce cours est dabord de donner un aperu gnral du fonctionnement du
systme UNIX et de se familiariser avec ses commandes de bases : manipulation sous
shell des fichiers et processus. Nous nous sommes efforcs de ne dcrire que des
commandes standards, qui devraient fonctionner sous toutes les versions dUNIX et pour
tous les utilisateurs.

2. Historique

1965 : Bell Laboratoies, General Electric et le M.I.T. (filiale dune socit amricaine
de tlcommunications) lancent le projet MULTICS qui vise crer un systme
dexploitation multitches et multi-utilisateurs en temps partag, implantable sur

2015-2016
4

SMI-S3

Cours : Systme Exploitation I

tout ordinateur, assurant une portabilit des applications . Les chefs de projets taient Ken
THOMPSON et Dennis RITCHIE de Bell Laboratories .

1970 : Apparition dune premire version de MULTICS en PL/1 .

1971 : Rcriture de MULTICS en Assembleur. En cette anne Ken cre le langage B.

1973 : Dennis RITCHIE et Brian KERNIGHAN cre le langage C issu damliorations


de B, en vue dune rcriture dUNIX, nom qui a succd MULTICS (Uniplexed
Information and Computer Service).Il a t crit UNICS en premier lieu .

1974-1977 :

Le code source d'Unix est distribu librement aux universits. En


consquence, UNIX a gagn la faveur de la communaut scientifique et universitaire. Il a
t ainsi la base des systmes d'exploitation des principales universits. l'Universit de
Berkeley devient un centre moteur du dveloppement UNIX. Ses versions portent le
signe BSD

Depuis, plus dune vingtaine de versions dUNIX ont vu le jour. Les quatre versions
principales sont BSD, SYSTEM V, POSIX (fdration de BSD et SYSTEM V) et LINUX
propos par Linus TORVALDS en 1991(un sosie du systme d'exploitation Unix crit
entirement de A Z).

3. Architecture du systme Unix


3.1. LArchitecture du systme :

Figure 1 : Larchitecture du systme Unix

Comme le montre la Figure1, l'architecture globale d'UNIX est une architecture


par couches (coquilles) successives. Les utilisateurs communiquent avec la couche la plus
volue (la couche des applications). Le programmeur lui va pouvoir en fonction de ces
besoins utiliser des couches de plus en plus profondes.

2015-2016
5

SMI-S3

Cours : Systme Exploitation I

Chaque couche est construite pour pouvoir tre utilise sans connatre les couches
infrieures (ni leur fonctionnement, ni leur interface). Ce principe dencapsulation
permet, alors, dcrire des applications plus portables si elles sont crites dans les
couches hautes. Pour des applications ou le temps de calcul prime devant la portabilit,
les couches basses seront utilises.

3.2. LArchitecture du noyau


Le noyau offre les services de base ("interface systme") pour construire les
commandes, les outils, les applications :

il gre les ressources matrielles (mmoire, units d'E/S ...), les fichiers,
l'allocation de temps CPU.
il gre les processus.
il gre la communication et la synchronisation

Figure 2 : Architecture du noyau

Pour faire appel aux services du systme on passe gnralement par des fonctions
dfinies dans des bibliothques qui fournissent une interface de programmation
(API).Comme il est possible d'appeler directement le systme en utilisant des
interruptions logicielles prdfinies (Figure 2).

2015-2016
6

SMI-S3

Cours : Systme Exploitation I

Le noyau du systme Unix est divis en deux sous systmes : le premier dont le
rle est de grer tout ce qui concerne les entres/sorties et le second ddi la gestion des
processus (ordonnancement, gestion mmoire, communication inter-processus, etc.).
Les entres/sorties sont de deux types : en mode caractre pour des priphriques
dont la nature mme est de communiquer par caractres (les terminaux, les imprimantes et
les rseaux changent des caractres avec la mmoire centrale, sans tampon), et en mode bloc (
les mmoires de masse (disque, disquettes) changent des blocs dinformation avec la mmoire
centrale en utilisant des tampons.). Les entres/sorties en mode caractre ne font pas appel

au systme de cache rserv aux blocs. Ce systme est utilis afin de minimiser les accs
vers les priphriques concerns gnralement bien plus lents que la mmoire.

4. Arborescence des fichiers Unix


Unix organise les donnes stockes sur les disques en fichiers (files) et rpertoires
(catalogues ou directories en anglais). Les fichiers contiennent les donnes elles-mmes
(images, textes, programmes. . .) et les rpertoires permettent de les classer. Le
classement prend pour analogie un arbre gnalogique de paternit.

Figure 3 : Arborescence des fichiers dUINX

Un rpertoire P peut contenir plusieurs fichiers et plusieurs rpertoires F1,, Fn :


on que dit les Fk sont les fils de P. Un mme fichier/rpertoire F ne peut tre contenu
que dans un seul rpertoire P : on dit que P est le pre de F. Le rpertoire qui contient
tous les autres fichiers/rpertoires est appel rpertoire racine (root) de larborescence des
fichiers. Par convention la racine est son propre pre.
Chaque fichier/rpertoire possde un nom (une suite de caractres limits 14
caractres (/ est interdit et - ne peut tre le premier caractre)).

2015-2016
7

SMI-S3

Cours : Systme Exploitation I

Les fils dun mme pre doivent avoir des noms distincts, mais deux
fichiers/rpertoires de pres diffrents peuvent avoir des noms identiques. Par convention
la racine se nomme (/).

Il existe deux grands types de fichiers sous Unix :

Les fichiers standards : les fichiers manipuls par les utilisateurs ( les
fichiers texte, les excutables..)
Les fichiers spciaux : manipulables que par l'intermdiaire du systme
(priphriques, mmoire ) pour communiquer avec un priphrique, on lit
ou on crit dans un fichier spcial reprsentant ce priphrique.

4.1. Chemin d'accs un fichier


Le chemin d'accs un fichier (ou un rpertoire) est la description qui permet
d'identifier le fichier (ou le rpertoire) dans la hirarchie du systme. Le chemin d'accs
correspond en une suite de noms de rpertoires spars par des caractres / (slash) et
termin par le nom du fichier ou du rpertoire. Le caractre / marque la sparation
entre catalogues lorsqu'on dcrit le "chemin d'accs" un fichier ou un catalogue.
Il y a deux faons de spcifier le chemin d'accs (path) un fichier :

soit on dcrit le chemin partir de la racine (/) c'est donc un chemin


d'accs absolu (rfrence absolue). Le chemin d'accs absolu un fichier
est le mme quel que soit l'endroit o on se trouve. On dsigne ainsi un
fichier/rpertoire de faon unique, cest--dire son nom prcd de toute la
srie de ses anctres depuis la racine. Chaque nom est spar par autant de
slash (/) que lon veut.
soit on dcrit le chemin partir du rpertoire courant (catalogue courant),
c'est un chemin relatif (il ne commence donc pas par un / ). Le chemin
d'accs relatif un fichier sera diffrent en fonction du rpertoire courant.

Exemple

/home/Martin/Perso/mon_fichier.txt est une rfrence absolue (commence par /)

../../Martin/Perso/mon_fichier.txt est une rfrence relative (par rapport au


rpertoire courant).

4.2. Les rpertoires


L'organisation traditionnelle du rpertoire racine est dcrite dans le tableau suivant :

2015-2016
8

SMI-S3

Cours : Systme Exploitation I

Tableau 1 : Organisation du rpertoire racine (root)

Rpertoire

Contient

/bin

les fichiers excutables ncessaires l'initialisation

/boot

le noyau et les fichiers de dmarrage

/dev

les fichiers spciaux

/etc

les fichiers de configuration du systme et certains scripts

/home

contient les rpertoires personnels des utilisateurs. Par exemple,


l'utilisateur toto a gnralement pour rpertoire /home/toto.

/lib

les librairies systme et les modules

/lost+found

le stockage des fichiers retrouvs par fsck

/mnt

les points d'ancrage des systmes extrieurs

/proc

un systme de fichiers virtuels permettant l'accs aux variables du noyau

/root

le rpertoire de base du super utilisateur

/sbin

les fichiers excutables pour l'administration du systme

/tmp

les fichiers temporaires

/usr

les programmes, les librairies et les fichiers accessibles pour l'utilisateur

/var

les donnes variables lies la machine (spool, traces)

Ce systme de fichiers peut rsider sur diffrentes partitions, diffrents supports


physiques ou sur d'autres machines sur le rseau. Ce dcoupage est compltement
transparent pour les utilisateurs du systme de fichiers. Les diffrentes parties peuvent
tre connectes au dmarrage du systme ou la demande, en cours d'utilisation.
Dans la partie suivante, nous allons essayer de dcrire quelques rpertoires parmis
les rpertoires cits dans le tableau en haut :

2015-2016
9

SMI-S3

Cours : Systme Exploitation I

4.2.1. Les rpertoires home


Ce sont les rpertoires qui regroupent les rpertoires maisons home directory
des utilisateurs, cest--dire les rpertoires o ils sont chez eux et peuvent stocker leurs
donnes personnelles. Le nom du home dun utilisateur est gnralement son login. Par
scurit, en dehors de son home, un utilisateur quelconque ne peut :
Modifier nimporte quel fichier (droits dcriture restreints sur les fichiers) :
criture interdite pour ne pas dtruire le systme ou les donnes dun autre
utilisateur par accident ou par malveillance.
Ajouter ou supprimer un fichier dans nimporte quel rpertoire.
Lire nimporte quel fichier: lecture autorise dans larborescence du systme, sauf
dans les homes o les utilisateurs fixent les droits comme ils souhaitent, et pour
certains fichiers sensibles comme par exemple /etc/shadow qui contient les mots
de passe des utilisateurs.
Excuter nimporte quel fichier (droits dexcution restreints sur les fichiers) :
excution interdite pour les fichiers de donnes (non destines tre excutes) :
autorises pour les excutables, sauf les programmes dadministration du systme
comme useradd et usrdel pour ajouter ou supprimer un compte utilisateur.
Aller nimporte o dans larborescence et en lister le contenu (resp. droits daccs
restreints en excution et en lecture sur les r2pertoires) : Les utilisateurs aimant
leurs intimits peuvent interdire aux autres laccs tout ou partie de leur
compte.
4.2.2. Les rpertoires bin
Les rpertoires bin (comme binaire) sont les rpertoires destins contenir des
fichiers excutables. Si la plupart sont effectivement des binaires (suites de codes lisibles
pour le processeur mais illisibles pour lhumain), dautres sont des fichiers scripts (du
texte lisible par lhumain) destins tre interprts par linterprteur adquat :
/bin : contient les binaires importants pour le fonctionnement du systme (
linterprteur de commande (ou shell) lui meme, et les principales commandes
pour la manipulation de fichiers comme cp (copy) pour dupliquer un fichier, rm
(remove) pour effacer un fichier du disque. . . ..
/usr/bin, /usr/local/bin, /usr/X/bin : des endroits o lon installe habituellement
les excutables des applications utilisateurs.
Exemple : dans /usr/local/bin on trouve
le programme de retouche de photos gimp (GNU Image
Manipulation Programme),
le compilateur du langage C gcc (GNU C Compiler),
le visualiseur dimages xv (X11 viewer).
xterm, le programme qui ouvre un shell dans une fentre X11,
xclock un programme affichant lheure sous la forme dune
horloge dans une fentre.
2015-2016
10

SMI-S3

Cours : Systme Exploitation I

/sbin, /usr/sbin : contient les programmes qui ne sont en principe utiles quaux
administrateurs du systme (ou sysadmin, super-user, root). La plupart de ces
programmes ncessitent les privilges du superuser pour tre xecuts, comme
useradd et userdel qui permettent dajouter et de supprimer un compte utilisateur
sur la machine.
4.2.3. Les rpertoires lib
Les rpertoires lib (comme library) sont les rpertoires destins aux fichiers
bibliothques : ce sont des blocs de code partags par plusieurs codes binaires. Ceci a
pour principe dviter que le mme code soit dupliqu dans tous les binaires et on gagne
donc de la place sur le disque. Ceci permet aussi de mettre jour une bibliothque en la
remplaant par une version plus rcente (plus efficace ou contenant moins derreurs) et
tous les binaires lutilisant en profitent. On trouve /lib, /usr/lib, /usr/local/lib et
/usr/X/lib. Gnralement, les noms de ces fichiers commencent par lib et se terminent par
.so (shared object).
Exemple
/lib/libc.so contient toutes les routines de base des binaires programmes en
langage C (allocation mmoire, saisie au clavier, affichage sur le terminal,)
/lib/libm.so contient toutes les routines mathmatiques de base pour le C (racine
carre, algorithme, cosinus, . . .).
4.2.4. Les rpertoires etc
Le rpertoire etc contient les principaux fichiers de configuration et scripts
dinitialisation du systme. Ce sont gnralement des fichiers texte.

/etc/printers.conf : contient la liste des noms des imprimantes accessibles sur le


rseau depuis la machine,
/etc/passwd : contient la liste des utilisateurs pouvant se loger sur la machine.
Chaque ligne construite sur le modle :

login : le login dun utilisateur,


pass : le mot de passe de lutilisateur,
uid : un entier unique identifiant lutilisateur (une version numrique
du login),
gid : est un nombre identifiant le groupe de lutilisateur (par
exemple Enseignants, Etudiants, Administrateur). Appartenir tel ou
tel groupe donne des privilges sur la machine, notamment sur sur
laccs en lecture/criture de certains fichiers/rpertoires.
nom : cest juste le nom de lutilisateur dans la viecourante,
home : le chemin de son rpertoire maison

2015-2016
11

SMI-S3

Cours : Systme Exploitation I


shell : son interprteur de commande favori, utilis par dfaut par
xterm.

Exemple
djelloul :x :158 :101 :Khalil DJELLOUL :/home2/djelloul :/bin/bash
godbert :x :133 :101 :GODBERT Elisabeth :/home2/godbert :/bin/bash
On voit que le champ pass est toujours vide. Par scurit, les mots de passe sont
crypts dans le fichier inaccessible /etc/shadow.
4.2.5. Les rpertoires man
Quand un programme est bien fait, il est galement bien document. Le rpertoire
/usr/man (manual) regroupe les fichiers de documentation destins tre lu par le
programme /usr/bin/man.
Exemple : pour utiliser la commande ls, nous taperons la commande suivante :

De mme pour utiliser le manuel lui-mme, nous taperons :

5. Les commandes Unix


Il existe deux environnements de travail diffrents sous les systmes dexploitations
de la famille dUnix (dans notre cours nous travaillerons toujours avec le systme
dexploitation Linux) :

le mode texte : les commandes sont saisies au clavier et le rsultat s'affiche


sous forme de lignes de texte sur un cran
Lenvironnement Xwindow (l'interface des stations UNIX) : qui est un
environnement multifentres en rseau avec des applications commandes par
une souris.

Le travail en ligne de commande (mode texte) est souvent beaucoup plus efficace,
plus rapide et plus appropri qu travers une interface graphique (dans de nombreux
contextes (serveurs, systmes embarqus, liaisons distantes lentes) on ne dispose pas
dinterface graphique;).

5.1. Syntaxe des lignes de commande Unix


Les lignes de commande Unix peuvent tre simples et se rduisent un seul terme
(ex : commande date), comme elles peuvent tre plus complexes et ncessitent plus
dinformations que le simple nom de la commande.
2015-2016
12

SMI-S3

Cours : Systme Exploitation I

Une commande Unix peut avoir ou non des arguments. Cet argument est soit une
option soit un nom de fichier .Une ligne de commande Unix scrit gnralement sous le
format suivant :
Commande option(s) fichier(s)
Exemple : man man

Les options modifient, ou prcisent, le comportement de la commande. Elles sont


souvent de simples lettres prcdes de tiret (-) et spares par des espaces ou
des tabulations. Les options des commandes peuvent souvent tre regroupes :
ls -r -l

ls -rl

ou permutes :

ls -rl

ls -lr

Largument fichier est le nom dun fichier que nous dsirons utiliser

En gnral :
Les noms de commandes sont entrs en caractres minuscules.
Les commandes, les options et les noms des fichiers sont spars par des espaces.
Les options sont places avant les noms des fichiers (la majorits des systmes
Unix permettent de traiter plusieurs fichiers).

5.2. Commandes de manipulation des fichiers


Tableau 2 : Commandes de manipulation de fichiers

Commande Description

Options

Paramtres

pwd

affiche la rfrence absolue du


rpertoire courant

cd

Change le rpertoire courant

chemin d'accs
rpertoire

basename

extrait le nom du fichier d'un


chemin complet

Chemin du fichier
+[suffixe] : partie
supprimer de la chane

2015-2016
13

un

SMI-S3

chmod

Cours : Systme Exploitation I

change les permissions


lecture, criture, excution
chmod [ugoa]
<fichier(s)>

chgrp

{+-}

en

-R
change
rcursivement
noeud

les
droits
partir du

Mode (ugoa) - nom de


fichier ou de rpertoire

[rwx]

Groupe
fichier

change le groupe propritaire du


fichier.

nom

du

chgrp option groupe <fichier(s) >

chown

Utilisateur nom du
fichier

change l'utilisateur propritaire


du fichier
Chown utilisateur < fichier(s)>

cp

copie du fichier source vers la


destination

-i : demande confirmation source - destination


-p : conservation de date et
droits
-r : recopie rcursive d'un
rpertoire

ls

Affiche la liste des fichiers dans


le dossier courant ou d'un autre
dossier.

-a : prise en compte des nom de rpertoire


fichiers
cachs
-F : renseigne sur le type de
fichier
(*,
/,
@)
-i : prcision du numro
d'inode
des
fichiers
-R : liste rcursivement le
contenu
du
rpertoire
-l : informations dtailles
-g : ajout du nom du groupe
-d
:
renseigne
sur
le
rpertoire
lui-mme
-t : liste par date de
modification
-u : liste par date d'accs
-r : ordre inverse

mkdir

cre des rpertoires

rm

dtruit des fichiers ou des


rpertoires

rmdir

dtruit un ou des rpertoires


vides

nom du rpertoire
-f : force la commande sans
s'occuper
des
droits
-i : demande confirmation
-r : destruction rcursive

Nom du fichier ou du
rpertoire

nom de rpertoire

2015-2016
14

SMI-S3

Cours : Systme Exploitation I

mv

dplace
fichiers

(ou

renomme)

des

touch

met jour les dates d'accs des


fichiers

-i : demande confirmation

Source-destination

-a : dernier accs seulement


-m : dernire modification
seulement

Cre fichier vide sil nexiste


pas
place

disque -k : donne l'espace disque

df

affiche
la
disponible

du

donne la place disque utilise -s : affiche seulement Rpertoire


l'espace total utilis pour
par le rpertoire

utilis et libre sur


diffrentes partitions.

les

chaque
argument
en
ajoutant
un
suffixe
correspondant l'unit (K,
M, G).

file

donne le type de fichier

Fichier

5.3. Commandes de filtre en mode texte


Tableau 3 : Commandes de Trie

Commande Description
cat

Options

Paramtres

Affiche le texte dun fichier ou - v: permet de convertir les Fichier

concatne plusieurs fichiers sur caractres spciaux des fichiers lire+fichiers


binaires en caractres affichables
la sortie standard
n:
numrote
les
lignes
- b : numrote que les lignes non
vides
- E : affiche le symbole $ (dollard)
la
fin
de
chaque
ligne
- s : n'affiche au plus un ligne vide
T:
affiche
les
caractres
tabulations
comme
^I
A:
quivalent

-vET
e:
quivalent

-vE
- t : quivalent -vT.

sort

trie les lignes de texte en entre

- b : ignore les espaces en dbut de

fichier

2015-2016
15

SMI-S3

Cours : Systme Exploitation I


ligne
- d : ordre alphabtique (A-Z, a-z,
0-9,
espace)
(par
dfaut)
f:
ignore
la
casse
n:
ordre
numrique
- r : inverse l'ordre de tri.

effectue des modifications sur les - n: crit seulement les lignes


lignes de texte
spcifies (par l'option /p) sur la

sed

sortie standard.

sed [-n] [-e commande] [-f


fichier de commandes] [fichier] -e:permet

de
spcifier
les
commandes appliquer sur le
fichier. Cette option est utile lorque
vous
appliquez
plusieurs
commandes. Afin d'viter que le
shell interprte certains caractres,
il faut mieux encadrer la commande
avec des ' ou des " ;
- f:les commandes sont lue partir
dun fichier

more

affiche l'cran l'entre standard


en mode page par page

less

affiche l'cran l'entre standard


en mode page par page avec des
possibilits de retour en arrire

cut

permet d'isoler des colonnes dans


un fichier

expand

transforme les tabulations en


espaces

head

affiche les n premires lignes

join

permet de joindre les lignes de


deux fichiers en fonction d'un
champ commun

2015-2016
16

SMI-S3

Cours : Systme Exploitation I

paste

concatne les lignes des fichiers

tail

affiche les n dernires lignes du


fichier

tac

concatne
les
fichiers
inversant l'ordre des lignes

uniq

limine les doublons d'un fichier


tri

rev

inverse l'ordre des lignes d'un


fichier

pr

formate
un
l'impression

tee

crit l'entre standard sur la sortie


standard et dans un fichier

tr

remplace ou efface des caractres

fichier

en *

pour

5.4. Gestion des processus


Tableau 4 : Commandes de gestion de processus

Commande

Description

ps

affiche la liste des processus

kill

envoie un signal un processus

nice

fixe la priorit d'un processus

5.5. Commandes diverses


Tableau 5 : Autres commandes

Commande

Description

true

ne fait rien sans erreur

2015-2016
17

SMI-S3

Cours : Systme Exploitation I

false

ne fait rien, avec une erreur

echo

affiche une ligne de texte

date

affiche et modifie la date courante

gzip

compresse les fichiers

sleep

attend pendant le temps spcifi

grep

recherche de chanes de caractres dans des fichiers

find

recherche des fichiers sur le systme

bc

calculatrice en mode texte

cal

affiche le calendrier

clear

efface l'cran

csplit

dcoupe un fichier en sections

diff

permet d'obtenir la diffrence entre deux fichiers

factor

recherche les facteurs premiers d'un nombre

hexdump

affiche le contenu d'un fichier en hexadcimal

id

affiche l'identification d'un utilisateur

passwd

permet de changer le mot de passe

wc

compte les caractres, les mots et les lignes en entre

whereis

permet de trouver l'emplacement d'une commande

who

affiche la liste des utilisateurs prsents

2015-2016
18

SMI-S3

Cours : Systme Exploitation I

Chapitre 2 : La programmation Shell

1. Pourquoi programmer en shell ?


Un interprteur est un programme interactif servant dintermdiaire entre
lutilisateur et les programmes binaires excutables. Cet interprteur qui appelle le
systme quand il le faut, entoure lensemble des commandes .Il sappelle le shell. Il
interprte les commandes que lui fait lutilisateur. Comme ces demandes se traduisent
souvent par un appel une commande, nous disons quil interprte un langage de
commande. Par la suite et par abus de langage les termes interprteurs du langage de
commande et langage de commande pourront tre confondus.
Ainsi ; nous pouvons dire que le shell est le nom gnrique donn aux langages de
commandes (en mode interactif ou en mode script) .En effet, shell ne se limite pas
un simple interprteur de commandes, mais dispose d'un vritable langage de
programmation qui permet dcrire des programmes denchanement de commandes :
Scripts.
Ces scripts permettent l'administrateur de simplifier la ralisation de tches
rptitives. Un script est un fichier texte contenant les commandes excuter ainsi
que, ventuellement, des structures de contrle, des boucles, des assignations de
variables, des fonctions et des commentaires.
De nombreux shells sont accessibles sous Linux, mais c'est gnralement le bash
(Bourne Again SHell) qui est utilis pour la programmation shell car il est facile
d'emploi, libre de droit et gratuit.
Les divers langages existants sont trs semblables : bash, csh, ksh ou sh (utilis
ici). Le mme mot dsigne l'interprteur de commandes (shell) et le langage dans
lequel les commandes sont crites (Shell).

1.1. Niveau lexical :


Le shell interprte des instructions du langage de commandes qui doivent tre
spares par des sparateurs dinstruction. Comme il y a plusieurs sortes
dinstructions, nous utiliserons le vocabulaire suivant :

Une commande est une instruction analogue un appel de sous-programme


externe, dont le code est excutable par la machine (cp ,mkdir et rm sont des
commandes).

2015-2016
19

SMI-S3

Cours : Systme Exploitation I


Une commande interne est une instruction analogue un appel de sousprogramme interne au shell, son action est ralise par le shell lui-mme (exit,
read sont des commandes internes du Shell).
Une instruction est une commande interne qui est une structure de contrle
(if ,while sont des instructions du Shell)
Une phrase ou une ligne de commande est une composition syntaxiquement
correcte de commandes, commandes internes et instructions, que sait
interprter le Shell

1.2. Les sparateurs :


Les sparateurs de phrases (lignes de commande) sont le RET ou le point-virgule.
Dans une mme phrase, les sparateurs dentits lexicales sont le blanc et le caractre
de tabulation(TAB).Le nombre de sparateurs entre entits est quelconque.

1.3. Les Mots :


Les mots du langage sont constitus avec les caractres lettres, chiffres et
soulign, ils commencent par une lettre ou un soulign. Les mots dsignent les
variables, les symboles du langage (mots-cl) et les noms et les noms des fichiers.

1.4. Les Caractres gnriques:


Les caractres gnriques, nomms galement des jokers, sont des caractres
spciaux qui ont la capacit dtre remplacs par des chaines en fonction des noms
des fichiers du rpertoire courant. Ces caractres sont ltoile, le point dinterrogation
et le crochet ouvrant associ au crochet fermant.

? Remplace un caractre quelconque, sauf le RET ;


Remplace nimporte quelle chaine, mme vide, de caractres ne comportant
pas de RET.
[ ] Remplace un caractre parmi ceux qui sont numrs entre les crochets, ou
un caractre parmi ceux qui ne sont pas numrs entre les crochets si le
premier dentre eux est un point dexclamation.

1.5. Les Caractres spciaux :


Le caractre de continuation \ plac en fin de ligne indique que la phrase en cours
nest pas termine et se poursuit sur la ligne suivante. Le RET est alors transform en
espace.
Les caractres spciaux ont une signification dans le langage, moins quils ne
soient ignors. Un caractre spcial devient un caractre normal sil est prcd du
caractre \ ou sil est situ dans un parenthsage particulier. Les caractres spciaux
sont :
2015-2016
20

SMI-S3

Cours : Systme Exploitation I

& | <>$ ( ) " {} \


Ainsi, un \ en fin de ligne annule le retour-chariot, et cest pourquoi lantislash est
considr comme le caractre de continuation dune ligne.
1.5.1. Les commandes bloquantes et non bloquantes : Oprateur &
Unix est un systme d'exploitation multi-tche, ce qui signifie que vous pouvez
lancer plusieurs commandes simultanment. Unix dispose d'un gestionnaire de tches
dont le rle est de contrler l'excution simultane des programmes.
Chaque programme est appel processus ou tche. Par exemple diter ou
imprimer un fichier sont des tches (ou processus). Une tche peut comporter
plusieurs
programmes
connects
par
des
tubes.
Plusieurs commandes sont disponibles pour grer l'excution des tches.
Excuter une tche au premier plan (foreground) signifie que pendant son
excution l'utilisateur n'a pas la main.
Une excution en arrire plan (background) signifie que la tche est excute de
faon parallle et la main est rendue l'utilisateur qui peut lancer d'autres
commandes.
Pour excuter une commande en arrire-plan, il suffit d'ajouter le signe & la fin
de la ligne avant de taper la touche Return.
Exemple
cp
F
G

processus
en
foreground,
commande
cp F G & processus en background, commande non bloquante

bloquante

1.5.2. Les redirections d'entre / sortie


Quand les commandes sont interprtes :
Elles affichent leurs rsultats sur l'unit de sortie standard qui est par
dfaut l'cran.
Elles reoivent leurs informations de l'unit d'entre standard qui est
classiquement le clavier.
Les messages d'erreurs sont envoys sur la sortie d'erreur. Par dfaut,
la sortie d'erreur est renvoye l'cran.
Il est possible de contrler les entres et sorties standard et ainsi de redfinir la
destination des informations fournies par les commandes. De cette manire, ces
informations peuvent tre places dans des fichiers et utilises ultrieurement.

2015-2016
21

SMI-S3

Cours : Systme Exploitation I


A. Rediriger la sortie vers un fichier : Oprateur >

Le symbole > permet d'envoyer le rsultat de la commande dans un fichier.


Dans l'exemple suivant le rsultat de la commande ls -la est renvoy dans le
fichier liste-fichiers :
ls -la > liste-fichiers
Lorsqu'une sortie est redirige vers un fichier, les informations ne sont plus
affiches l'cran. Dans le cas d'une redirection vers un fichier, si le fichier existe il
est cras, s'il n'existe pas il est automatiquement cr.
B. Rallongement d'un fichier : Oprateur >>

Les deux caractres >> indiquent que les informations doivent tre ajoutes la
fin d'un fichier existant.
La commande cat clients >> nouvclients ajoute le contenu du fichier clients
la fin du fichier nouvclients. Si le fichier nouvclients n'existe pas il est cr.
C.

Rediriger l'entre d'une commande : Oprateur <

Il est galement possible de prendre l'entre d'une commande dans un fichier en


utilisant le symbole < . Dans l'exemple suivant, la commande mail gdurand prend ses
informations dans le fichier info.
mail gdurand < info
Ainsi l'utilisateur gdurand reoit un courrier dont le texte est le contenu du fichier
info.
D. Rediriger les messages d'erreurs : Oprateur 2>
Unix utilise un canal spcial pour afficher les messages d'erreurs. Pour envoyer
ces messages d'erreurs dans un fichier, on utilise la syntaxe 2>.
L'exemple suivant renvoie les ventuelles erreurs de la commande cat dans le fichier
erreurs : cat fichier-test 2> erreurs
Notez que les rsultats de la commande s'affichent toujours l'cran (sortie
standard). Le tableau suivant donne la liste des diffrentes syntaxes de redirection.
Tableau 6 : Syntaxe de redirection des entres /Sorties sous unix

Syntaxe
>
>>
2>
2>>
<

Fonction
Redirection de la sortie standard
Ajoute les sorties un fichier existant
Redirige les messages d'erreur vers un
fichier
Ajoute les messages d'erreur un fichier
existant
Redirection des entres

Exemple
cat fichier1>fichier2
cat fichier1>>fichier2
cat fichier1 2> erreurs
cat
fichier1
fichier2
tr aA < fichier2

2>>

2015-2016
22

SMI-S3

Cours : Systme Exploitation I

1.5.3. Notion de Pipe : Oprateur |


Le pipe (ou tube) redirige la sortie (rsultat) dun processus directement lentre
dun autre.

Figure 4 : Exemple dutilisation de pipe(tube)

Dans la Figure 4 Le rsultat de la commande de gauche est redirig en entre de


la commande de droite. Logiquement cela quivalent :
ls -l > F
wc -l < F
En utilisant le pipe, nous ne crons pas de fichier F : ls et wc sont deux processus
s'excutant en pseudo-paralllisme. La synchronisation est ralise par le systme,
en suspendant wc quand le pipe est vide, et en suspendant ls quand le pipe est
plein.
Remarque : les pipes sont crs par le systme et sont unidirectionnels.
Exemple :
1- ls | wc : permet de calculer le nombre de fichiers du rpertoire courant.
2- ls | grep toto : permet de chercher les fichiers du rpertoire courant qui
contiennent la chane de caractre toto.
3- who | wc - l : permet de calculer le nombre de personnes connectes sur la
machine.
1.5.4. Parenthsages:
Les parenthsages servent grouper des squences de mots ou isoler des mots :
{} regroupent de commandes, parenthsage ordinaire ; dlimite aussi la
port de loprateur de valeur $.
() entoure une liste de commandes qui sont excuts par un nouveau
processus UNIX.
(les quotes) cest un parenthsage dans lequel aucun caractre sauf na
de signification spciale.
"" (Guillemets) parenthsage dans lequel aucun caractre sauf ," et $ na de
signification spciale ;
2015-2016
23

SMI-S3

Cours : Systme Exploitation I


(accents graves) excution de la phrase place entre accents graves, dlivre la sortie
standard des commandes situes dans ce parenthsage. Les caractres spciaux
lintrieur de parenthsage ne soient interprts qu lexcution de la phrase. Ce
parenthsage correspond un peu une activation de commandes en tan quappel de
fonction, puisquil dlivre une valeur qui lui est substitue dans le texte.

2. Le premier Programme :
Pour crire nos programmes shell nous utilisons un diteur de texte, tel que nedit,
kedit, emacs, vi...

#!/bin/sh
# fichier : PremierProgramme.sh
# Affiche un salut a l'utilisateur
echo "Bonjour $USER"

Chaque programme doit commencer par la ligne suivante (c'est obligatoirement la


premire ligne du fichier) : #!/bin/sh. elle permet de fournir au noyau la commande
lancer pour excuter le script.
Elle permet de dire que l'argument suivant est le programme utiliser pour
excuter ce fichier. Ici, cest le shell /bin/sh. Lorsque notre script est termin et
enregistr, nous devons le rendre excutable pour pouvoir l'utiliser l'aide de la
commande chmod. On tape alors :
chmod +x PremierProgramme.sh
Nous pouvons maintenant lancer notre script en tapant : ./PremierProgramme.sh

3. Les commentaires
Les commentaires, en langage shell, commencent par le caractre # et vont jusqu'
la fin de la ligne.

2015-2016
24

SMI-S3

Cours : Systme Exploitation I

4. Les variables
4.1. Les variables en Shell :
Comme dans tout langage de programmation, nous ne pouvons pas nous surpasser
des variables.
En langage shell, les variables sont dsignes par les mots ;elle ne se dclarent
pas , et leur type (numrique ou chaine) dpend de leur interprtation par les
commandes. Dans un mme processus, toutes les variables doivent avoir des noms
diffrents.
Pour initialiser une variables et lui affecter une valeur, il suffit d'crire :
Nom_variable=valeur
Il ne faut pas quil y ait espaces de chaque cot du symbole=.Une valeur peut tre
une valeur numrique, une chaine, le rsultat dune commande...
Pour rcuprer la valeur de la variable, il suffit d'crire le signe dollar $ devant le
nom de la variable : $
#!/bin/sh
# affecter une valeur la variable (sans la dclarer) :
a="Bonjour $USER "
# afficher le contenu de la variable "a" :
echo "La valeur de a est :"
echo $a
Pour ne pas avoir de confusion entre les variables et le reste du texte ; il faut
utiliser les accolades :
#!/bin/sh
# affecter une valeur la variable (sans la dclarer) :
a="Bonjour $USER "
# afficher le contenu de la variable "a" :
echo "La valeur de a est : {$a}Bienvenu"
Si nous crivons le programme prcdant sans utiliser les {} ; c--d : echo "La
valeur de a est : $aBienvenu" .Le programme donnera comme rsultat :< La valeur de
2015-2016
25

SMI-S3

Cours : Systme Exploitation I

a est :> car le shell recherchera une variable nomme aBienvenu qui n'a pas de valeur
dfinie.
Il existe quelques variables dfinies par le systme et utilises par le shell luimme ou par les processus en excution. On cite par exemple:
le chemin du rpertoire de base de l'utilisateur : $HOME
Une suite de chemins d'accs aux rpertoires des excutables: $PATH
l'invite de l'interprteur : $PS1
le nom de l'utilisateur : $USER
le type de shell : $SHELL
le nom du type du terminal : $TERM
liste de chemins d'accs pour la commande cd : $CDPATH
chemin d'accs la bote aux lettres utilisateur : $MAIL
intervalle en sec au bout duquel le mail est : $ MAILCHECK
La commande set (sans paramtre) permet de visualiser les variables et leurs
valeurs. Une commande peut tre efface de lenvironnement par la commande Unset
(ex unset variable).
La commande export permet de dfinir des variables denvironnement qui
pourront tre utilises par plusieurs processus fonctionnant simultanment. Cette
commande permettra de faire connatre alors la variable aux processus fils du shell.
Les variables cres par le fils ne sont pas transmises au pre.
Il existe des mthodes d'accs plus sophistiques permettant une substitution de
valeur. La substitution de valeur permet dvaluer conditionnellement la valeur du
variable. Elle sert donner des valeurs par dfaut des variables dont on ne sait pas si
elles sont initialises. Tableau7 montre ce mcanisme :
Tableau 7 : La substitution de valeurs sous UNIX

Mthode

Rsultat

${variable:- valeur}

donne la valeur de la variable si celle-ci n'est pas nulle, sinon donne la


valeur de substitution

${variable:= valeur}

comme ci-dessus et la valeur de substitution est affecte la variable

${variable:?message} donne la valeur de la variable si celle-ci n'est pas nulle, sinon affiche le
message de substitution et termine le processus shell en cours
${variable:+valeur}

donne la valeur de substitution si la variable n'est pas nulle, sinon ne


donne rien

2015-2016
26

SMI-S3

Cours : Systme Exploitation I

4.2. Les variables prdfinis :


Il existe plusieurs variables prdfinies utilisables dans les scripts :
Tableau 8 : Variables prdfinis

Variable

Fonction

$$

l'identificateur du processus courant (pid)

$?

la valeur de sortie de la commande prcdente(code de retour dune commande)

$!

l'identificateur du processus fils (numro du dernier processus lanc en arrireplan)

$0

donne le nom de fichier du script courant

$1 $9

les neuf premiers arguments du script

$#

le nombre d'arguments dune commande

$*

tous les arguments partir de $1 spars par un espace


Les variables $1 $9 contiennent les neuf premiers arguments du script. Pour
accder aux autres, il faut utiliser la commande shift. Celle-ci dcale les arguments
d'un cran vers la gauche : $2 est mis dans $1, $3 dans $2, etc. La variable $9 est
initialise avec le dixime argument.

5. Les oprations
La commande expr permet d'effectuer des oprations arithmtiques entires sur
les variables.
ATTENTION : il faut toujours banaliser les mta caractres (caractres gnriques ou
spcifiques) utiliss dans la commande expr avec \ .
$ expr 4 + 3
7
$ a=5
$ expr 4$a + 1
2015-2016
27

SMI-S3

Cours : Systme Exploitation I

46
$ expr $a \< 7
1
$ expr a \< c
1
Les oprations possibles sont :
+ - * / % (reste) sur des oprandes entiers ;
< > = >= <= ! (diffrent de) sur des oprandes quelconques, avec
comparaisons faites suivant l'ordre lexicographique entre chanes de
caractres ;
| & oprations boolennes.
La priorit est la priorit usuelle. On peut grouper avec des parenthses, qu'il faut
penser banaliser.
$ a=`expr 2 \* \( 3 + 5 \)` (affectation)
$ echo $a
16
$ a=`expr $a + 1` (incrmentation)
$ echo $a
17
Attention : pour laffectation la commande expr doit tre mise dans le
parenthesage `..`

6. Les tests
Il y a deux faons de faire des tests : Utiliser la commande test expression ou bien
[ expression ](Vous devez imprativement avoir un espace autour de chaque crochet)
Cette commande renvoie 0 si expression est vraie et un autre entier sinon.

6.1. Tests sur les chanes de caractres :

test -z chane est vrai ssi chane est vide


test -n chane est vrai ssi chane est non vide
test chane1 = chane2
test chane1 != chane2

2015-2016
28

SMI-S3

Cours : Systme Exploitation I

6.2. Test des nombres


Si deux chanes n et m contiennent des entiers sous forme dcimale, la commande
test permet d'effectuer les comparaisons suivantes :
[ n -eq m ] est vrai ssi n est gal m.
[ n -ne m ] est vrai ssi n est diffrent de m.
[ n -ge m ] est vrai ssi n est plus grand ou gal m.
[ n -gt m ] est vrai ssi n est strictement plus grand que m.
[ n -le m ] est vrai ssi n est plus petit ou gal m.
[ n -lt m ] est vrai ssi n est strictement plus petit que m.

6.3. Tests sur les fichiers :

test f fichier est vrai ssi fichier est un fichier


test -d fichier est vrai ssi fichier est un rpertoire
test -r fichier est vrai ssi fichier est autoris en lecture
test -w fichier est vrai ssi fichier est autoris en criture
test -x fichier est vrai ssi fichier est autoris en excution
test -s fichier est vrai ssi fichier est de taille non nulle

Les tests sont rarement utiliss seuls (bien que cela soit possible).Ils le sont en
gnral dans une conditionnelle.

7. L'excution conditionnelle
7.1. linsruction if hen fi
L'excution conditionnelle est gre par la structure :
if commande
then
autres commandes
fi

Linstruction if teste le code de sortie de la commande en paramtre. Si celui-ci


vaut 0 (vrai), le script excute les commandes entre then et fi.

2015-2016
29

SMI-S3

Cours : Systme Exploitation I

Il est possible d'avoir des structures du type :

if commande
then
commandes
else
commandes
fi
ou :
if commande
then
commandes
elif commande
commandes
fi
Attention : les mots-cls then, else et fi doivent tre en dbut de ligne ou prcds de ;
Exemple1
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]
then
echo "Vous travaillez avec le shell : bash "
else
echo " Vous travaillez avec le shell : $SHELL"
fi

Exemple2
#!/bin/sh
if [ -f $1 ];then if [ -x $1 ]
then echo $1 est un excutable

2015-2016
30

SMI-S3

Cours : Systme Exploitation I


else echo $1 n est pas un excutable
fi
else echo $1 nest pas un fichier
fi

Il existe deux commandes utiles pour les tests, ce sont true qui retourne toujours 0,
donc vrai, et false qui retourne toujours 1, donc faux.
7.1.1 combinaison de plusieurs conditions
Si nous voulons faire le test sur plusieurs conditions , nous devons les combiner
de la faon suivant :
[ cond1 -a cond2 ] : Vrai seulement si les deux conditions sont remplies.
[ cond1 -o cond2 ] : Vrai ds que l'une des deux conditions est remplie.
Exemple :
#!/bin/sh
a=$1
b=$2
if [ \( $a != $b \) -a \( $a -gt $b \) ]
then echo $a suprieur a $b
else echo $a plus petit que $b
fi

7.1.2. Les Oprateurs Condenss (Shortcut Operators)


Pour permettre des tests complexes mettant en uvre plusieurs commandes, il faut
utiliser les oprateurs && et || qui effectuent un ET logique et un OU logique sur le
rsultat des commandes. Ces oprateurs sont utiliss de la faon suivante :
commande1 && commande2
commande1 || commande2
Dans le cas du ET logique, la deuxime commande ne sera excute que si la
premire russit. Dans le cas du OU logique, la deuxime commande ne sera excute
que si la premire choue.
La syntaxe && peut tre utilise comme un raccourci de l'instruction if. La partie
droite de l'instruction est excute si la partie gauche est vraie
Exemple : (Or)

2015-2016
31

SMI-S3

Cours : Systme Exploitation I

#!/bin/sh
mailfolder=/var/spool/mail/toto
[ -r "$mailfolder" ] || { echo "Je ne peux pas lire $mailfolder" ; exit 1; }
echo "$mailfolder a recu un courrier de :"
grep "From " $mailfolder
Ce script teste tout d'abord s'il peut lire le dossier du courrier de lutilisateur toto
prcis. Si c'est le cas, il affiche les lignes "From" du dossier. S'il ne peut pas lire le
fichier $mailfolder, alors l'oprateur "OR" entre en action.Le problme, ici, c'est
qu'aprs OR nous ne pouvons mettre qu'une seule commande .Ici , nous avons utiliser
le parenthsage {} pour transformer, les deux commande echo et exit en une seule
commande.
Vous pouvez tout faire sans les oprateurs AND et OR, uniquement en utilisant
les instructions if, mais souvent les raccourcis des oprateurs ci-dessus sont plus
pratiques.
Exemple : (ET)
#!/bin/sh
[ -f exemple ] && echo "exemple est un fichier "
Nous pouvons lire lexemple comme suit: "exemple est un fichier ET la
commande echo est excute"

7.2. Linstruction Case


L'autre commande d'excution conditionnelle est la commande case qui permet de
comparer une valeur plusieurs expressions et d'excuter les commandes lorsqu'il y a
galit. La syntaxe de cette commande est :
case valeur in
expression1) commande
autre commande ;;
expression2) commande
autre commande ;;
*) commande
aure commande ;;
esac

2015-2016
32

SMI-S3

Cours : Systme Exploitation I

Si une expression correspond la valeur, les commandes sont excutes et $? est


mis 0. Sinon $? est mis 1.
Par exemple, le code suivant teste largument donn en paramtre :
case $1 in
oui | o | OUI | O ) echo "OK" ;;
non | n | NON | N ) echo "Pas d'accord" ;;
* ) echo "OUI ou NON" ;;
esac

8. L'excution itrative
8.1. Linstruction While
L'interprteur de commandes gre trois types de constructions pour les boucles :
while commande
do
commandes
done
ou
until commande
do
commandes
done
ou
for variable in liste_de_valeurs
do
commandes
done
Pour les deux premires constructions, le fonctionnement est similaire la
commande if. Pour la boucle for, la variable prendra successivement toutes les
valeurs de la liste.
2015-2016
33

SMI-S3

Cours : Systme Exploitation I

Les commandes break et continue permettent de modifier le fonctionnement des


boucles. La commande break est utilise sous deux formes :
break : sort de la boucle courante
break n : n tant un entier suprieur 0, permet de sortir de n boucles
imbriques.
La commande continue permet de passer l'itration suivante sans excuter les
commandes situes aprs.

9. Re-direction et structures de contrle


Il est possible de rediriger la sortie ou l'entre d'une structure de contrle
globalement. Par exemple, le programme suivant lit les lignes partir d'un fichier
dont le nom est dans la variable $fichier et imprime celles dont la longueur est
suprieure deux caractres dans le fichier temporaire tmp.txt.
while read ligne
do
longueur=`echo $ligne | wc -c`
if [ $longueur -lt 2 ]
then
continue
fi
echo $ligne
done < $fichier > tmp.txt

10. Les fonctions


Le shell permet de dfinir des fonctions appelables par le script. Cette mthode est
plus efficace que d'appeler des scripts externes car la fonction est excute dans le
mme processus. La syntaxe de dfinition d'une fonction est :
fonction()
{
commandes
}
et elle est appele par :
2015-2016
34

SMI-S3

Cours : Systme Exploitation I

fonction [paramtres]
Les fonctions reoivent les paramtres d'appel dans les variables $1 $9 et $*. La
valeur de $0 reste inchange.
Il est possible de dclarer des variables locales une fonction en utilisant la
commande local avant la dclaration de la variable. Dans ce cas, la modification de la
variable locale ne modifie pas une variable globale portant le mme nom.
Exemple :
MaFonction()
{
local maVariable="coucou"
echo $maVariable
}
maVariable="Bonjour"
echo $maVariable
MaFonction
echo $maVariable
La commande return permet de spcifier le code de retour de la fonction. S'il n'est
pas spcifi, la variable $? est initialise au code de fin de la dernire commande de la
fonction.
Le shell supporte les appels rcursifs de fonctions. Comme dans tout langage
rcursif, il faut faire trs attention aux effets de bord et aux variables non dclares en
local.

2015-2016
35

SMI-S3

Cours : Systme Exploitation I

TP1-Prise en main dUnix


Le but de ce premier TP est de commencer vous familiariser avec
lenvironnement Unix.

1- Introduction
Pour interagir avec un systme UNIX, lutilisateur rentre des commandes dans un
interprteur : le shell. Vous pouvez lancer cet interprteur laide dun programme
nomm console ou terminal (xterm). Le premier caractre de dbut dune ligne dans cet
interprteur est le prompt (gnralement cest le caractre $, qui peut etre prcd du
nom de lutilisateur ainsi que dun chemin dans le systme de fichier, par exemple :
nom@machine:~$
Linterprteur est prt recevoir une commande. Taper cette commande au clavier
puis appuyer sur la touche <RET> (retour chariot, ou touche entre) permet dexcuter
une commande.
Les commandes UNIX suivent le format suivant : Commande option(s) fichier(s)
nom@machine:~$ Commande option(s) fichier(s)

Commande : le nom de la commande excuter,

options : est une liste doptions (souvent une suite de lettres ou des mots qui
suivent spars par un tiret - ) pour cette commande,

fichier(s) : est lentit ou les entits sur lesquelles la commande sera excute.
Remarque : UNIX respecte la casse,

Avant de commencez par vous familiariser avec les diffrents menus de votre
espace de travail Unix : Il faut dabords se connecter cet espace.

2- Connexion au systme
Chaque utilisateur est identifi par une procdure de login : nom dutilisateur
(username) valide suivi du mot de passe (password) correspondant. Cest
ladministrateur systme qui assigne le nom dutilisateur et le mot de passe initial.
Chaque station a un nom de machine (hostname).
Nous utilisons pour nos Tps des machines sous Linux (ubuntu).
Se connecter est videmment la premire chose faire. Le systme dmarre et
affiche une fentre vous invitant taper votre identifiant (login) et votre mot de passe
(password), ce qui vous permet douvrir une session.
Dans les salles machines de la facult et par raison de scurit, ltudiant accde
au systme ubuntu comme utilisateur invit et donc il ne passe pas par la procdure
2015-2016
36

SMI-S3

Cours : Systme Exploitation I

dauthentification. Autant quinvit, ltudiant naura pas tous les droits daccs mais
pourra excuter les commandes de base.

3 - Dcouverte de linterface graphique


Une fois votre nom dutilisateur et mot de passe vrifis (sur une version installe
dunix ), le gestionnaire de bureau, le programme qui gre laffichage des menus et des
fentres (ici KDE) apparat. Le menu principal (bouton K en bas gauche) permet de
lancer des applications, daccder aux outils de paramtrage du systme ou encore de
fermer la session ou dteindre lordinateur.

4- Ajouter un utilisateur
Note : la plupart des programmes ainsi que le menu principal disposent dune
entre aide (help) permettant daccder laide en ligne. Si vous tes coinc(e),
nhsitez pas la consulter.
Explorez un peu le menu principal. Lancez quelques applications, et exercez-vous
agrandir, fermer et dplacer les fentres. Parcourez lensemble des menus disponibles et
essayez de deviner quoi sert chaque fonction.
Avec le bouton droit de la souris, vous pouvez faire apparatre diffrentes
commandes selon lendroit cliqu (on parle de menus contextuels ).
Si vous voulez ajouter un utilisateur il faut basculer vers le root (super utilisateur)
car il est le seul utilisateur qui a le droit dajouter ou de modifier les paramtres dun
utilisateur.
Pour passer au mode root ouvrez une console et tapez su ou sudo. Tapez ensuite
adduser pour ajouter un nouvel utilisateur.
Par dfaut, les users invits n'ont pas de password. Pour mettre un mot de passe
root tapez : sudo passwd et pour mettre un mot de passe au user "knoppix", tapez: sudo
passwd knoppix.
Vous pouvez visualiser les utilisateurs que vous avez ajout en ouvrant le
fichier /etc/passwd.

5- Dcouvrez larborescence des fichiers Unix


Ouvrez la racine / et dcouvrez larborescence dUnix en parcourant les diffrents
rpertoires qui sy trouvent et en se rappelant (cours) le types de fichiers ou de rpertoires
quils contiennent.

2015-2016
37

SMI-S3

Cours : Systme Exploitation I

6- Ajout fichiers/rpertoires

Crer un utilisateur portant votre nom.

crer une arborescence de fichiers et rpertoires dans votre rpertoire home(en


utilisant la souris).

2015-2016
38

SMI-S3

Cours : Systme Exploitation I

TP2- Commandes de base dUnix

Figure 1 : Arborescence des fichiers

Parite I : Manipulation des fichiers et des rpertoires


1. Dans quel rpertoire se trouve lutilisateur louverture de sa session de travail ?
2. Crer larborescence de la Figure1. Le reprsente le rpertoire personnel de
lutilisateur. Les rpertoires apparaissent en gras.
3. Utilisez la commande mkdir pour crer des rpertoires vides : Utiliser la commande
touch pour crer un fichier vide ou bien cat en utilisant la redirection dE/S(>).
4. Aller directement dans /Rapport/Docs/Afaire/.
5. De l, passer dans /Rapport/docs/EstFait/.
6. Revenir dans /Rapport/.
7. Sans changer de rpertoire, regarder avec less le contenu de /Web/index.html.
8. Passer dans /Rapport/Docs/.
9. En restant au mme endroit, afficher le contenu du rpertoire Mail.
10. Revenir dans le rpertoire principal.
11. Ouvrez /Rapport/.
12. Affichez le contenu du fichier Rapport.txt en utilisant la commande cat.
13. Ecrivez la phrase suivante dans le fichier Rapport.txt en utilisant la commande
echo : " Cest ma premire phrase dans ce fichier "
14. Raffichez le contenu du fichier Rapport.txt.
2015-2016
39

SMI-S3

Cours : Systme Exploitation I

15. Rcrivez la phrase prcdente dans le fichier et raffichez le contenu du fichier.


Quesque vous remarquez ?
16. Insrez la phrase suivante dans le mme fichier sans effacer la premire : " Cest ma
deuxime phrase dans ce fichier ".
17. Afficher le chemin absolu de votre rpertoire courant.
18. Crer un fichier Fich dans le rpertoire AFaire contenant le texte suivant :
aaaaaaaaa
bbbbbbbbbbbbbb
cccccc
dddddddddddddd
eeeeeeeeeeeee
fffffffffffffffffffff
gggggggggggggg
hhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiii
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
kkkkkkkkkkkkkkkkkkkk
a. Affichez les dix premires lignes du fichier Fich avec la commande head.
b. Affichez les deux premires lignes du fichier Fich.
c. Affichez les 10 dernires lignes du fichier Fich avec tail
d. Affichez les 3 dernires lignes
e. Affichez de la cinquime la dernire ligne
f. Affichez les lignes du fichier numrotes avec la commande nl.
g. Affichez le nombre de lignes, mots et caractres du fichier Fich en utilisant
wc.
h. Affichez juste le nombre de lignes puis juste le nombre de caractres et enfin
affichez le nombre de caractres et de mots du fichier Fich.
19. Dplacez vous dans le rpertoire /etc
a. Affichez le contenu du fichier passwd contenu dans /etc.
b. Affichez les lignes de fichiers qui contiennent le mot root avec la commande
grep.
c. Affichez le nombre de lignes contenant le mot root.
d. Affichez les lignes ne contenant pas root.
2015-2016
40

SMI-S3

Cours : Systme Exploitation I

e. Affichez les lignes ne contenant pas root ainsi que le numro de la chaque
ligne.
20. Passez au mode super utilisateur et crer un nouvel utilisateur portant votre nom.
a. Afficher la ligne du fichier /etc/passwd qui contient votre mot de login.
b. Affichez avec la commande cut les caractres du 2me au 5me de toutes les
lignes.
c. Afficher les six premiers caractres et le 10me caractre de toutes les lignes.
d. Affichez les champs 1 et 7 du fichier passwd en utilisant le sparateur : .
21. Le rpertoire /usr/include contient les fichiers dentte standards en langage C
(stdlib.h,...).
a.

Crer un rpertoire nomm inc dans votre rpertoire de connexion. En


utilisant une seule commande, y copier les fichiers du rpertoire /usr/include
dont le nom commence par std et termine par .h avec la commande cp.

b.

Afficher la liste des fichiers de /usr/include dont le nom commence par a, b


ou c et termine par .h.

c. Afficher la liste des fichiers de /usr/include dont le nom comporte 3 caractres


suivis de .h. Supprimez les avec la commande rm.
d. Dtruisez tous les fichiers contenus dans le rpertoire inc.
e. Dtruisez le rpertoire inc avec rmdir ou bien rm R.
f. Renommez le fichier /Rapport/Rapport.txt en /Rapport/RapportFinal.txt.
g. Dplacez le /Rapport/RapportFinal.txt dans /Rapport/Docs/Afaire. Dplacez
le dans cette fois dans /Rapport/Docs/Estfait en modifiant son nom en
/Rapport/VersionFaite.txt.
22. Crer les deux fichiers suivants Fich1 et Fich2 dans /Rapport/Docs avec
respectivement les contenus suivant :
Fich 1 :

Fich 2 :

1erre ligne

1erre ligne

2eme ligne

seconde ligne

3eme ligne

3eme ligne

a. Comparez le contenu des deux fichiers Fich1 et Fich2 en utilisant la


commande cmp.
b. Crez un troisime fichier Fich3 identique Fich1.
c. Constatez quils sont identiques l aide de la commande cmp.
d. Ajoutez la ligne 4eme ligne dans Fich1 et les deux lignes suivantes dans
Fich2 :
2015-2016
41

SMI-S3

Cours : Systme Exploitation I


Quatrieme ligne
5eme ligne

e. Affichez les diffrences de contenu entre Fich1 et Fich2 avec la commande


diff.
23. Crer Le fichier Etudiants suivant dans /Rapport/Docs.
M:Dup:Ge:38:T
F:Dura:Gl:25:A
M:Ab:Ma:42:la
M:Es:Au:17:Au
F:Durt:so:24:al
M:dura:be:33:tou
a. Triez le fichier Etudiants par ordre alphabtique en utilisant la commande
sort.
b. Triez le fichier partir du deuxime champ le sparateur est :
c. Riez en ordre inverse.
d. Triez sur le 4me champ numrique.

Parite II : Pipes (Enchanements de commandes, une seule ligne)


24. Compter le nombre de fichiers du rpertoire courant.
25. Compter le nombre de fichiers du rpertoire courant.
26. Compter le nombre des rpertoires du rpertoire courant.
27. Afficher le plus gros fichier du rpertoire courant.
28. Renvoyer le nombre d'utilisateurs connects en utilisant la commande who.
29. Compter le nombre de lignes contenant votre nom de login dans /etc/passwd.
30. Affichez uniquement les login de tous les utilisateurs du systme tris.
31. Affichez les correspondances login, numro d'utilisateur (UID) , nom rel. Eliminez
les doublons en utilisant la commande uniq. (La structure du fichier /etc/passwd est
dtaille dans le chapitre 1 paragraphe 4.2.4)
32. Compter le total des lignes des fichiers dans /etc
33. Afficher le nombre de fichiers n'appartenant pas root dans /etc.

2015-2016
42

SMI-S3

Cours : Systme Exploitation I

Partie III : Droits daccs


34. Un ensemble de permissions daccs est associ tout fichier. Ces permissions
dterminent qui peut accder au fichier et comment. Ainsi ; Pour chaque fichier, on
peut avoir le droit de :
r : accs en lecture
w : accs en criture
x : accs en excution
Une combinaison arbitraire de ces droits.
De plus, on peut donner/supprimer ces droits pour :
u : le propritaire du fichier,
g : le groupe du fichier,
o : tous les utilisateurs.
a : tout le monde
a. Crer un fichier vide mon_fichier dans le rpertoire /Rapport/Docs en
utilisant la commande touch nom_fichier. A quel groupe appartient-il ?
b. Changer les droits de ce fichier en utilisant la commande chmod.
c. Supprimez les droits de lecture sur votre fichier. Essayer de l'ouvrir avec un
diteur de texte. Remettez les droits de lecture, mais supprimez les droits
d'criture. Essayez de l'ouvrir avec un diteur de texte et rajouter une ligne au
fichier et essayez de le sauvegarder.
d. A quoi correspondent les droits de lecture/criture/excution pour les
rpertoires ? Testez en dcrivant ce que vous faites.

2015-2016
43

SMI-S3

Cours : Systme Exploitation I

TP3- Scripts en Shell Unix sh


Exercice 1 : Premiers Scripts
1- Ecrire un script qui permet de faire afficher la date du jour sur une ligne et sur la
ligne suivante les usagers branchs au systme.
2- Ecrire un script qui permet de demander lutilisateur de saisir son nom et lui
affiche le message suivant :
Bonjour $nom , votre dossier personnel contient :
Exercice 2 : Interactivit du Shell
Les shells scripts interactifs sont bass sur des commandes shell (echo et read). Crer un
script interactif qui permet la conversation suivante entre le systme et lutilisateur :
Cher utilisateur quel est votre nom ?
Ravi de vous connaitre, $nom
Quel est votre prnom et votre ge?
Vous avez $age ans $prenom $nom
Exercice 3 : Arguments
crivez un programme Shell qui affiche un un les arguments de la commande. Par
exemple :
$ ./argument un deux trois quatre
4 arguments :
1 - un
2 - deux
3 - trois
4 - quatre
Exercice 4 : Les oprations
1- crivez un script qui accepte 2 chiffres en paramtre, additionne ces deux chiffres
et affiche le rsultat.
2- Ecrivez un script qui permet de retourner le nombre de caractre dune chane de
caractre donne en paramtre.
Exercice 5 : test et instruction conditionnelle
Ecrivez un script qui permet de lire le nom dun fichier. Le script doit afficher le contenu
si le fichier est ordinaire ou bien louvrir si cest un rpertoire.
2015-2016
44

SMI-S3

Cours : Systme Exploitation I

Exercice 6 : Linstruction case


Ecrivez un script "supprime" qui pose la question "Voulez-vous supprimer le fichier
nom_fichier ?" et qui donne les rsultats suivants aprs excution :
- Si la rponse est oui, Oui, OUI , O il doit afficher le message suivant :Votre fichier est
supprim.
- Si la rponse est non, NON, N, n le programme retourne le message suivant :Votre
fichier
na
pas
t
supprim.
- Sinon le programme doit afficher le message suivant : Rponse incorrecte.
Exercice 7: Les boucles while et until
1- Ecrivez un script qui permet de tester si un mot de passe saisi par lutilisateur est
bien "ubuntu " en donnant lutilisateur la main de saisir le mot quatre fois.
Donnez une version en utilisant le boucle while et une autre avec linstruction
until.
2- Ecrivez un script qui convertit les minutes passes en paramtre en secondes. Le
programme doit tester si lutilisateur a bien donn les minutes en argument.
Exercice 8 : La boucle for
1- crirez un programme Shell qui compte de 1 10 en utilisant la boucle for.
2- Ecrivez un script qui explore un rpertoire donn en paramtre et donne le type de
chaque fichier rencontr (fichier ordinaire, rpertoire, fichier en mode bloc ou
fichier en mode caractre ). Modifiez le script pour quil puisse prendre plusieurs
rpertoires en paramtre.
3- Ecrivez un script qui teste si des chanes de caractres passes en paramtre
appartiennent un ou plusieurs fichiers dun rpertoire lui aussi pass en
paramtre.( boucles for imbriques ) .
Exercice 9 : La boucle while et redirection des entres /Sorties
1- Ecrivez un script qui lit un fichier donn en paramtre et affiche chaque ligne de
ce fichier prcde de son numro de ligne dans le fichier.
2- Le fichier prcdent contient les informations dun client tel que chaque ligne
correspond un client et comporte son nom, son prnom et son age. Ecrivez un
script qui lit ce fichier ligne par ligne et afficher la phrase suivant pour chaque
ligne :
Le client numro Num_client_dans_fichier est ag de age_client est
appel prenom_client,nom_client

2015-2016
45

SMI-S3

Cours : Systme Exploitation I

Exercice 10 : Les fonctions.


1- Ecrivez une fonction effacer_fichier() qui permet de confirmer ou non la
suppression dun fichier donn en paramtre la fonction.
2- Ecrivez un script Suppresion qui permet de supprimer les fichiers .log et .txt dun
rpertoire donn en paramtre au script en utilisant la fonction effacer_fichier().
Exercice 11 :
Ecrivez un script qui prend en paramtre le nom dun processus (programme en cours
dexcution) cherche son PID et le tue. Le programme doit tester si lutilisateur a bien
pass le nom de processus en paramtre.
Exercice 12:
Ecrivez un script profondeur qui fait un parcours en profondeur dun rpertoire qui
affiche le nom des fichiers rencontrs et les fils de chaque rpertoire rencontr.

2015-2016
46

SMI-S3

Cours : Systme Exploitation I

Projet Unix SMI S3 2015-2016 : Agenda

1- Descriptif du projet
Le projet consiste raliser, l'aide de scripts shell sh une application de
gestion des rendez-vous dun cabinet mdical. Le script final doit permettre :
1- Enregistrement et authentification de plusieurs utilisateurs.
2- Enregistrements des patients.
3- Gestion des rendez-vous.
Linterface sera entirement textuelle.
Lutilisateur du programme doit sidentifier avant dutiliser lapplication.
Un utilisateur est dcrit par les lments suivants (stocks dans un fichier) :
1. Son nom
2. Mot de passe
3. Sa description
2- Descriptif technique
a. Dmarrage
Le script du projet devra se nommer GestionRendezVous.sh.
b. Structure de donnes
Le projet sera modlis sous forme de fichiers et de rpertoires. Il doit
utiliser des scripts shell uniquement. Pour simplifier lcriture du script shell qui
englobe lensemble du projet, vous pouvez crire quelques scripts utilitaires
effectuant des parties du travail.
c. IHM
Lapplication tant en mode texte. La communication utilisateur /
programme sera base de commandes en mode texte. Un menu contenant les
options de lapplication permettra de :

2015-2016
47

SMI-S3

Cours : Systme Exploitation I

Menu 1 : Gestion des Utilisateurs


1- Enregistrer Un nouvel utilisateur
2- SAuthentifier
3- Quitter
Une fois lutilisateur connect, le menu suivant saffiche :
Menu 2 : Gestion des rendez-vous
1. Ajouter un patient.
2. Prendre un Rendez-vous.
3. Consulter les Rendez-vous.
4. Consulter les jours fris.
5. Abandonner.
Pour prendre un rendez-vous, lutilisateur doit vrifier les disponibilits
pour lhoraire demand par le patient. Un mme horaire (entre 09h00 et 10h00
par exemple) peut tre affect au maximum trois personnes.
Lutilisateur devra chaque fois vrifier si le jour demand ne concide
pas avec des samedis et des dimanches en utilisant la commande cal par
exemple.
Durant lutilisation une touche spcifique permettra dafficher le menu2
dcrit cidessus.
d. Fichiers ncessaires
Le projet doit contenir deux fichiers enregistrant les informations sur les
utilisateurs
et
les
patients
:
FichierUtilisateur,
FichierPatient,
FichierRendezVous, FichierJoursFris.
1- Le FichierUtilisateur contient les informations sur les utilisateurs. Il a la
structure suivante :
Identifiant unique de lutilisateur: login: password :Nom-Prenom :Tel :Adresse
2- Le FichierPatient contient les informations sur les patients. Il a la
structure suivante :
Identifiant unique du patient:Nom-Prenom:Tel Adresse
2015-2016
48

SMI-S3

Cours : Systme Exploitation I

3- Le fichier FichierRendezVous contiendra les informations des joueurs


enregistrs dans le jeu.
Identifiant unique du Rendez-vous:Nom-Prenem du patient:Heure:Date
4- Le fichier FichierJoursFri contiendra les jours fris prendre en
considration lors des prises des Rendez-vous.
Identifiant unique du Jour Fri:libll:Date
3- Rapport & script
Le rapport sera rendre au format PDF, la page de garde devra contenir le
nom des binmes.
Aprs une rapide introduction, vous donnerez les informations relatives
l'interprtation du sujet et les choix que vous avez effectus.
Les scripts devront tre inclus en annexe.
Les scripts devront tre comments.
Un CD contenant les scripts doit tre rendu .le dossier sauvegard doit
avoir la nomenclature suivante : nombinome1_nombinome2.tar.gz

2015-2016
49

SMI-S3

Cours : Systme Exploitation I

Quelques Rfrences
1. Shells Linux et Unix par la pratique, par Blaess, Christophe , Editeur:
Eyrolles , Publication: 2008 . ISBN: 978-2-212-12273-2

2. Scripts shell Linux et Unix - Avec 30 scripts prts l'emploi, par : Blaess,
Christophe. Editeur: Eyrolles, Publication: 2012, ISBN: 978-2-21213579-4

3. Linux : The Complete Reference 6th edition, par Petersen et Richard,


Editeur: McGraw-Hill USA,
4. Cours Pierre-Yves AILLET : Universit de Picardie Jules Verne
dAmiens,

2015-2016
50

Vous aimerez peut-être aussi