Vous êtes sur la page 1sur 21

Système d’exploitation – UNIX

Programmation SHELL

E.M.S.I.
Département Informatique

Pr. Khadija OUAZZANI TOUHAMI

2022 - 23
Pr. Khadija OUAZZANI TOUHAMI 1
Système d’exploitation – UNIX
Programmation SHELL

Système UNIX

Programmation SHELL

Bourne Shell

Pr. Khadija OUAZZANI TOUHAMI 2


Système d’exploitation – UNIX
Programmation SHELL

PLAN
Partie 1 : Le langage SHELL
Notions et mécanismes de base

Partie 2 : Les SHELL Scripts


Concepts de base

Partie 3 : La programmation SHELL


Mécanismes de contrôle de flot
Structuration de programmes

Pr. Khadija OUAZZANI TOUHAMI 3


Système d’exploitation – UNIX
Programmation SHELL

Partie 1

Le langage SHELL

Notions et mécanismes de
base
Pr. Khadija OUAZZANI TOUHAMI 4
Système d’exploitation – UNIX
Programmation SHELL

Le Shell est le langage de commande du système Unix.

C’est un interpréteur Shell ou langage interprété permettant :

➢ d’écrire des commandes en mode ligne de commande

➢ d’écrire des programmes Shell ou Shell Scripts

Les Shell Scripts permettent de réaliser des tâches plus ou


moins complexes, sous forme d’un ensemble de commandes
Shell.

Pr. Khadija OUAZZANI TOUHAMI 5


Système d’exploitation – UNIX
Programmation SHELL

Caractéristiques des Shell Scripts :


➢ Portabilité
➢ Facilité de mise en œuvre
➢ Simplicité

Facilités du Shell :
➢ Génération des noms de fichiers
➢ Variables non typées
➢ Paramètres positionnels
➢ Substitution de commandes
➢ Caractères spéciaux
Pr. Khadija OUAZZANI TOUHAMI 6
Système d’exploitation – UNIX
Programmation SHELL

1. Génération de noms de fichiers


Désigner de manière facile et explicite un ensemble de noms
de fichiers à l’aide d’une notation condensée

Utilisation de caractères spéciaux ou méta-caractères

?: n’importe quel caractère non vide.


d?g : tout nom de fichier de 3 caractères,
commençant par «d» et se terminant par «g».
dig , dog , d3g , diog , …

Pr. Khadija OUAZZANI TOUHAMI 7


Système d’exploitation – UNIX
Programmation SHELL

1. Génération de noms de fichiers

*: n’importe quelle chaîne de caractères, y compris la


chaîne vide.
s*n : tout nom de fichier commençant par «s» et se
terminant par «n».
sn , sun , soon , season , s0101n , s_1.bin , …

[…] : liste de caractères ou intervalle.


[A-Z]*[0-9] : tout nom de fichier commençant par une
lettre majuscule et se terminant par un chiffre.
Texte1 , Rapport_2020 , F1 , …

Pr. Khadija OUAZZANI TOUHAMI 8


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.1. Les variables Shell simples

2 types de variables Shell :


➢ Les variables shell simples
➢ Les variables prédéfinies
Une variable Shell simple «nom» est créée par :

nom=valeur
valeur étant une chaîne de caractères
Exemple :
cours=unix
poids=156 La valeur de la variable «poids» n’est pas le
nombre 156, mais la chaîne ‘156’
Pr. Khadija OUAZZANI TOUHAMI 9
Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.1. Les variables Shell simples

Toute valeur affectée à une variable est par défaut une chaîne
de caractères.
L’interprétation numérique d’une chaîne de caractères est
faites grâce aux commandes « test » et « expr ».
Pour initialiser une variable à la chaîne vide :
X=
X=’’
X=’’’’
N.B. : «-» : caractère illégal dans un nom de variable
«_» : caractère autorisé

Pr. Khadija OUAZZANI TOUHAMI 10


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.1. Les variables Shell simples

Pour accéder à la valeur d’une variable Shell, on utilise la


commande «echo». Exemples :
$ echo cours # Fait l’echo de son argument
cours
$ echo $cours # echo de la valeur de la variable cours
unix
$ echo la valeur de cours est $cours # Usage simultané
la valeur de cours est unix # des 2 formes
L’echo d’une variable non définie ou d’une variable affectée
d’une chaîne vide produit une ligne blanche.

Pr. Khadija OUAZZANI TOUHAMI 11


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.2. Variables Shell prédéfinies

Le Shell maintient des variables prédéfinies.


Chaque utilisateur possède ses propres variables
prédéfinies.
Les variables prédéfinies les plus connues et
utilisées sont :
HOME=/usr/users/paul # Répertoire personnel de
#l’user paul
LOGNAME=paul # Nom d’utilisateur

Pr. Khadija OUAZZANI TOUHAMI 12


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.2. Variables Shell prédéfinies

PATH=.:/bin:/usr/bin # noms des répertoires dans


# lesquels le Shell recherche
# successivement les commandes

PS1=$ # 1er prompt ou message d’attente

PS2=> # 2ème prompt lors de l’entrée d’une


# commande sur plusieurs lignes

Certaines de ces variables peuvent être modifiées


dans le fichier .profile.

Pr. Khadija OUAZZANI TOUHAMI 13


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.3. Variables Shell locales

Une variable Shell est par défaut locale, elle n’est connue que
dans le Shell où elle a été créée.

Une variable de même nom créée dans un sous Shell ou Shell


fils serait une variable distincte. La valeur de la même
variable dans le Shell père n’est pas concernée par les
modifications apportées à la variable dans le Shell fils.

Tout Shell a ses propres variables locales.

Pr. Khadija OUAZZANI TOUHAMI 14


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.3. Variables Shell locales

Exemple :
$ cours=unix # Création de la variable cours
$ echo $cours
unix
$ sh # Création d’un sous Shell
$ echo $cours # Variable non définie

$ cours=dos # Création d’une nouvelle variable


$ echo $cours
dos
$ ctrl-D # Retour au Shell père (exit)
$ echo $cours # Affiche la valeur initiale
unix
$

Pr. Khadija OUAZZANI TOUHAMI 15


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.4. Transmission de variables

Tout Shell a ses propres variables globales appartenant a son


environnement.

La transmission de variables se fait par la commande


«export».

Toute variable utilisée en argument de cette commande


possèdera une copie dans tous les sous Shell

Mécanisme d’Héritage

Pr. Khadija OUAZZANI TOUHAMI 16


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.4. Transmission de variables

Ce type de variable est appelé variable globale.


Exemple :
$ cours=unix # Création de la variable cours
$ export cours # Transmission de variable
$ echo $cours
unix
$ sh # Création d’un sous Shell
$ echo $cours # Variable héritée du sh père
unix
$ cours=dos # Création d’une nouvelle variable
$ echo $cours # locale au sh fils
dos
$ ctrl-D # Retour au Shell père
$ echo $cours # Affiche la valeur de la variable du
unix # sh père
Pr. Khadija OUAZZANI TOUHAMI 17
Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.4. Transmission de variables

➢ Les variables peuvent être exportées vers les


sous Shell, mais ne peuvent être renvoyées vers
un Shell père.

➢ Le renvoi de valeurs à un Shell père est traité


partiellement par l’appel de fonctions en
utilisant la «substitution de commandes»

Pr. Khadija OUAZZANI TOUHAMI 18


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.5. Le fichier .profile

Ce fichier contient les instructions initiales de toute session


de travail. Il se trouve dans /etc/profile par défaut.

Login exécution de .profile s’il existe.

Ce fichier contient plusieurs définitions de variables globales.


Possibilité de :
✓ Modifier la valeur des variables prédéfinies ;
✓ Créer de nouvelles variables globales nécessaires à
certaines applications. Les variables globales étant
connues à tout niveau d’appel de l’application.
Pr. Khadija OUAZZANI TOUHAMI 19
Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.5. Le fichier .profile

Exemple : .profile de l’utilisateur paul

HOME=/usr/users/paul
LOGNAME=paul
PATH=.:/bin:/usr/bin
PS1=’oui? ’
export HOME LOGNAME PATH PS1
date
echo Bienvenue paul

Pr. Khadija OUAZZANI TOUHAMI 20


Système d’exploitation – UNIX
Programmation SHELL

2. Notion d’environnement 2.5. Le fichier .profile

Login de paul :

login : paul
password : xxxxxxxxxx
Fri Feb 14 10:30
Bienvenue paul
oui?

Pr. Khadija OUAZZANI TOUHAMI 21

Vous aimerez peut-être aussi