Vous êtes sur la page 1sur 81

Systèmes d’Exploitation LINUX

Hiba Ouni

IsetCom Tunis

2020/2021

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 1 / 77


Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 2 / 77


Introduction

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 3 / 77


Introduction

Introduction

1 Qu’est-ce qu’un Système d’exploitation ?


1 C’est un ensemble de programmes permettant de rendre utilisable une
architecture matérielle et d’optimiser l’utilisation des ressources
disponibles.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 4 / 77


Introduction

Introduction

Fonctionnalités et spécificités
Chargement et lancement des programmes
Gestion des processeurs, de la mémoire, des périphériques
Gestion des processus (programmes en cours d’exécution) et des
fichiers
Protection contre les erreurs et la détection des erreurs, etc.
La possibilité d’utiliser l’ordinateur par une interface graphique ou
plutôt une interface homme-machine
lancer des programmes
copier/déplacer/... des fichiers

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 5 / 77


Introduction

Introduction

Fonctionnalités et spécificités
L’OS (Operating System) gère :
La mémoire : il la partage entre tous les programmes
Les périphériques : écran, imprimante, disque dur, réseau. Il s’assure
que les programmes puissent les utiliser de façon standard.
Le processeur : il le partage entre tous les programmes pour qu’ils aient
l’air de fonctionner parallèlement
Les utilisateurs : gérer les droits d’accès aux fichiers, comme au matériel
La standardisation des programmes : offre des interfaces de
programmation simplifiées et standardisées.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 6 / 77


Introduction

Introduction

Fonctionnalités et spécificités
L’OS (Operating System) gère :
La mémoire : il la partage entre tous les programmes
Les périphériques : écran, imprimante, disque dur, réseau. Il s’assure
que les programmes puissent les utiliser de façon standard.
Le processeur : il le partage entre tous les programmes pour qu’ils aient
l’air de fonctionner parallèlement
Les utilisateurs : gérer les droits d’accès aux fichiers, comme au matériel
La standardisation des programmes : offre des interfaces de
programmation simplifiées et standardisées.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 6 / 77


Introduction

Introduction

Fonctionnalités et spécificités
L’OS (Operating System) gère :
La mémoire : il la partage entre tous les programmes
Les périphériques : écran, imprimante, disque dur, réseau. Il s’assure
que les programmes puissent les utiliser de façon standard.
Le processeur : il le partage entre tous les programmes pour qu’ils aient
l’air de fonctionner parallèlement
Les utilisateurs : gérer les droits d’accès aux fichiers, comme au matériel
La standardisation des programmes : offre des interfaces de
programmation simplifiées et standardisées.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 6 / 77


Introduction

Introduction

Fonctionnalités et spécificités
L’OS (Operating System) gère :
La mémoire : il la partage entre tous les programmes
Les périphériques : écran, imprimante, disque dur, réseau. Il s’assure
que les programmes puissent les utiliser de façon standard.
Le processeur : il le partage entre tous les programmes pour qu’ils aient
l’air de fonctionner parallèlement
Les utilisateurs : gérer les droits d’accès aux fichiers, comme au matériel
La standardisation des programmes : offre des interfaces de
programmation simplifiées et standardisées.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 6 / 77


Introduction

Introduction

Fonctionnalités et spécificités
L’OS (Operating System) gère :
La mémoire : il la partage entre tous les programmes
Les périphériques : écran, imprimante, disque dur, réseau. Il s’assure
que les programmes puissent les utiliser de façon standard.
Le processeur : il le partage entre tous les programmes pour qu’ils aient
l’air de fonctionner parallèlement
Les utilisateurs : gérer les droits d’accès aux fichiers, comme au matériel
La standardisation des programmes : offre des interfaces de
programmation simplifiées et standardisées.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 6 / 77


Introduction

Introduction
Exemples de systèmes d’exploitation

MS-DOS, Windows
OS/2, Mac-OS
Unix (AIX, Xenix, Ultrix, Solaris, etc.)
Linux
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 7 / 77
Présentation de Linux, Structure et principes de
fonctionnement

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 8 / 77


Présentation de Linux, Structure et principes de
fonctionnement

Présentation de Linux

Si au début de son histoire le développement du noyau Linux était


assuré par des développeurs bénévoles, les principaux contributeurs
sont aujourd’hui un ensemble d’entreprises, souvent concurrentes,
comme Red Hat, Novell, IBM ou Intel.
La licence du noyau Linux est la licence publique générale GNU. Cette
licence est libre, ce qui permet d’utiliser, copier et modifier le code
source selon ses envies ou ses besoins. Ainsi, quiconque a les
connaissances nécessaires peut participer aux tests et à l’évolution du
noyau.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 9 / 77


Présentation de Linux, Structure et principes de
fonctionnement

Présentation de Linux : Le projet GNU

Principe de base : le libre accès au code source accélère le progrès en


matière d’informatique car l’innovation dépend de la diffusion du code
source
La liberté au sens GNU est définie selon quatre principes (le copyleft
GPL) :
liberté d’exécuter le programme, pour tous les usages
liberté d’étudier le fonctionnement du programme, de l’adapter à ses
besoins
liberté de redistribuer des copies
liberté d’améliorer le programme et de publier ses améliorations, pour
en faire profiter toute la communauté

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 10 / 77


Présentation de Linux, Structure et principes de
fonctionnement

Structure de Linux

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 11 / 77


Présentation de Linux, Structure et principes de
fonctionnement

Structure de Linux

Le noyau est la couche logicielle la plus interne du système. Elle est dédiée à
la gestion des composants matériels : processeur, mémoire, périphériques.
Autour du noyau gravite un certain nombre d’utilitaires.
L’utilisateur communique avec le noyau par l’intermédiaire d’un SHELL. Les
Shells sont aussi des langages de commandes et de programmation.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 12 / 77


Présentation de Linux, Structure et principes de
fonctionnement

Structure de Linux

Le noyau gère les tâches de base du système :


L’initialisation du système
La gestion des ressources
La gestion des processus
La gestion des fichiers
La gestion des Entrées/Sorties
Les utilitaires sont des outils d’interfaçage avec le système, de
programmation et de communication.
Le Shell est l’interpréteur de commandes qui vérifie, interprète les
commandes, les exécute et renvoie les réponses.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 13 / 77


Le Shell Linux

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 14 / 77


Le Shell Linux

Le Shell Linux

Le Shell est un programme (application), qui assure l’interface entre


les différents programmes et la machine
Mode ligne de commandes et non en mode graphique.
Les shells les plus connus sont :
BOURNE SHELL (sh)
KORN-SHELL (ksh)
C-SHELL
TC-SHELL
BOURNE AGAIN SHELL (bash)

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 15 / 77


Le Shell Linux

Le Shell Linux

Propriétés du Shell Linux :


Interactive
Exécution des programmes en arrière plan (non interactifs),
Redirection des E/S,
A un langage simple pour écrire des scripts,
A quoi cela sert-il ?
Administrer.
Sur une machine multiprocesseur, avoir une idée de son occupation.
Automatiser des traitements massifs ou un même programme doit être
lancé des dizaines de fois.
Savoir se connecter à une machine Linux distante pour y prendre ou
mettre des fichiers ainsi qu’y lancer des programmes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 16 / 77


Le Shell Linux

Les commandes Shell

Syntaxe d’une commande Shell :


nom_commande [-options] [arguments]

Exemple :

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 17 / 77


Le Shell Linux

Les commandes Shell

Quelques commandes Shell


Commande Description
cd Changer de répertoire de travail
mkdir Créer un répertoire
pwd Afficher le nom du répertoire de travail
touch Crée un fichier vide
mv Renommer un fichier
rm Supprimer un fichier
ls Afficher le contenu d’un répertoire
cat Affiche le contenu d’un fichier à l’écran
less Affiche de façon progressive le contenu d’un fichier
chmod Changer les protections d’un fichier
wc Compter le nombre de mots, lignes ou caractères
tar Création ou décompression d’archives
echo Affiche une chaîne de caractère à l’écran
find Rechercher un fichier
ps Afficher la liste des processus de l’utilisateur

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 18 / 77


Le Shell Linux

Les commandes Shell

Attention : Linux fait la différence entre majuscules et minuscules.


Une aide fournissant les informations sur les commandes est disponible
en utilisant la syntaxe suivante :
man nom_commande
Exemple :
man ls

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 19 / 77


Le Shell Linux

Options des commandes

Presque toutes les commandes Linux acceptent des options qui modifient
leur comportement.
Voici par exemple les options de la commande ls :
ls -a affiche également les fichiers cachés, qui commencent par un .
sous Linux.
ls -l affiche des informations supplémentaires, comme la date et la
taille des fichiers.
ls -t trie les fichiers par ordre de dernière modification.
Les options d’une commande peuvent être combinés. Exemple : ls -alt.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 20 / 77


Le système de fichiers

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 21 / 77


Le système de fichiers

Le système de fichiers

Sous Linux, un fichier est un objet recevant et délivrant des données,


et qui est constitué d’une chaîne non structurée de caractères.
On distingue trois types de fichiers :
le fichier ordinaire : ensemble de données stockées sur un disque ou un
dispositif analogue (dvd-rom, clé,...)
le répertoire : ensemble d’informations permettant d’accéder à d’autres
fichiers.
le fichier spécial : représente un dispositif physique d’entrées/sorties
(terminal, imprimante, lecteur,. . .)

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 22 / 77


Le système de fichiers

Le système de fichiers

Un fichier est décrit dans une structure de données appelée i-nœud


(ou inode) comportant les informations suivantes :
type de fichier (répertoire, fichier ordinaire,...),
mode de protection,
nombre de liens,
numéro du propriétaire,
numéro du groupe,
taille du fichier en octets,
adresses physiques directes,
adresses physiques indirectes,
date et heure du dernier accès, de la dernière modification du fichier et
de la dernière modification de l’i-nœud.
Les i-nœuds sont rangés dans une table où chaque i-nœud a un
numéro (index).
La commande ls -i nom_fichier permet de connaître le numéro de
i-nœud du fichier.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 23 / 77
Le système de fichiers

Le système de fichiers
Arborescence de fichiers
L’ensemble des fichiers gérés par le système Linux est organisé en une seule
arborescence de racine /

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 24 / 77


Le système de fichiers

Les liens (physiques et symboliques)

Liens Physiques : ln nom_fichier nom_lien


Création de plusieurs fichiers pour le même inode
Pour supprimer un fichier, il faut supprimer tous les liens directs vers
son inode
Liens Symboliques : ln -s nom_fichier nom_lien
Un fichier spécial contenant le chemin d’accès à un autre fichier
(possède sa propre inode)
Dès que le fichier cible est détruit, son espace est libéré (ouvrir le lien
symbolique engendre alors une erreur)

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 25 / 77


Le système de fichiers

Chemin absolu, chemin relatif


L’emplacement de chaque ressource (fichier ou répertoire) dans le système
de fichiers est appelé son chemin. Dans un chemin Linux, le séparateur
dans entre deux répertoires est le caractère /.
On distingue deux types de chemins :
Un chemin absolu identifie une ressource en commençant à la racine
de l’arborescence, avec le caractère /.
Un chemin absolu ne dépend pas du répertoire courant et est donc
valide partout.
Exemple : /home/User1/hello.txt et /etc/apache/httpd.conf sont des
exemples de chemins absolus.
Un chemin relatif identifie une ressource à partir du répertoire courant.
Il dépend donc du répertoire courant et n’est pas valide partout.
Exemple : ../marc/adresses.txt et documents/cours/Shell.pdf (sans /
au début !) sont des exemples de chemins relatifs.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 26 / 77


Le système de fichiers

Répertoire personnel

Sous Linux, chaque utilisateur (sauf root) dispose d’un répertoire


personnel à son nom situé dans /home. Par exemple, le répertoire
personnel de l’utilisateur nicolas est /home/nicolas.
Le chemin absolu du répertoire personnel peut s’écrire de manière
abrégée avec le caractère (tilde). Par exemple, le chemin /music/
pour l’utilisateur nicolas correspond au chemin absolu
/home/nicolas/music/.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 27 / 77


Le système de fichiers

Commandes à connaître

pwd (print working directory) affiche le chemin du répertoire courant.


ls (list) affiche le contenu du répertoire courant.
cd (change directory) permet de se déplacer dans le système de
fichiers en changeant de répertoire courant.
Répertoires à part :
/ : racine du filesystem
. : répertoire courant
.. : répertoire parent
∼ : répertoire maison («home dir», correspond à $HOME)

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 28 / 77


Le système de fichiers

Commandes à connaître

mkdir (make directory) crée un nouveau répertoire.


mkdir monrep crée le répertoire monrep dans le répertoire courant.
touch crée un nouveau fichier (vide) ou met à jour la date de
modification d’un fichier existant.
touch fic1.txt crée un fichier vide fic1.txt dans le répertoire courant.
cp (copy) copie des fichiers ou des répertoires.
cp fic1.txt monrep/ copie le fichier fic1.txt dans le répertoire monrep.
mv (move) déplace ou renomme des fichiers ou des répertoires.
mv fic1.txt monrep/ déplace le fichier fic1.txt dans le répertoire monrep.
mv fic1.txt fic2.txt renomme le fichier fic1.txt en fic2.txt.
rm (remove) supprime des fichiers. rm -r supprime des répertoires.
rm fic1.txt supprime le fichier fic1.txt.
rm -r monrep supprime le répertoire monrep ainsi que tout son contenu.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 29 / 77


Droits d’accès aux fichiers

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 30 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers

Le système Linux est un système multi utilisateurs où l’accès aux


fichiers est contrôlé par des permissions d’accès.
Les droits d’accès aux fichiers déterminent qui peut faire quoi d’un
fichier. Le quoi consiste en trois types d’actions, chacune associée à un
caractère :
r lecture (read)
w écriture (write)
x autorisation d’exécution (execute)
- aucun droit

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 31 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers

Il existe trois types d’utilisateurs, chacun associé à un caractère :


le propriétaire du fichier (u)
les membres du groupe auquel appartient le propriétaire du fichier (g)
les autres utilisateurs (o)
Il existe différents types de fichiers, chacun associé à un caractère, on
cite :
fichier ordinaire (-)
fichier répertoire (d)
lien symbolique (l)

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 32 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers

Droits associés aux fichiers.


(r)ead : permet la lecture d’un fichier, ce qui autorise par exemple la
copie du fichier (cat, more, cp, etc.)
(w)rite : permet de modifier le contenu d’un fichier (cat », vi, etc.)
e(x)ecute : permet de considérer le fichier comme une commande
(fichier binaire ou script)
(-) : aucune permission
Droits associés aux répertoires (l’emportent sur les fichiers)
(r)ead : permet de lire le contenu du répertoire (ls)
(w)rite : permet de modifier le contenu du répertoire. Autorise donc la
création et la destruction de fichiers dans le répertoire à condition que
la permission ’x’ soit activée (touch, cat >, vi) ;
e(x)ecute : permet d’entrer dans le répertoire (cd)
(-) : aucune permission

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 33 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers

Pour visualiser les droits d’accès d’un fichier, on utilise la commande ls


-l suivie par le nom du fichier.
Exemple :

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 34 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers


Notation absolue ou octale

On peut également représenter les droits d’accès à un fichier par trois


chiffres (un nombre octal). On considére :
r=4
w=2
x=1
-=0
Exemple : r-x=4+0+1=5
On peut aussi l’écrire en notation binaire :
1 si r ou w ou x
0 sinon.
Exemple : r-x = 101 = 5
Exemple : La chaîne rwxrw-r-x est équivalente à 765
On a alors rwxrw-r-x = 111 110 101 = 765

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 35 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers


Modification des utilisateurs et des droits d’accès

Nous savons que l’ensemble d’utilisateurs qui ont accès à un fichier


(“propriètaire”, “groupe” et “autres”) est determiné par défaut lors de
la création du fichier même. Toutefois, il existe des commandes pour
changer cet ensemble d’utilisateurs.
La commande chmod : changer les droits d’accèes.
chmod mod nom_fichier
Le mode affecte les droits du propriètaire, du groupe et des autres. On
a deux façons de spécifier le champ mode :
mode absolu :
mode est le nombre octal qui correspond aux nouveaux droits du fichier.
Par exemple : chmod 765 fichier
mode symbolique :
mode indique de quelle façon les droits d’accès doivent être modifiés. Il
se décompose en [qui] op accès

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 36 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers


Modification des utilisateurs et des droits d’accèes

[qui] op accès où :
qui est optionnel et indique quelles classes sont concernées par la
commande chmod (u,g ou o)
op peut être :
+ pour ajouter des droits d’accès
- pour enlever des droits d’accès
= pour affecter des droits d’accès.
accès est une combinaison des lettres r, w et x qui spécifient les types
d’accès.
Exemple : Par exemple : chmod a=r,u+w fich permet de changer
d’abord les droits de tous (utilisateur, groupe et autres) en “seule
lecture” (a=r) et ensuite d’ajouter au propriétaire le droit d’écriture
(u+w).

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 37 / 77


Droits d’accès aux fichiers

Notation absolue ou octale

Principe de la méthode octale

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 38 / 77


Droits d’accès aux fichiers

Notation absolue ou octale

Principe de la méthode symbolique

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 39 / 77


Droits d’accès aux fichiers

Droits d’accès aux fichiers

1 A quels droits correspondent les entiers 751, 521, 214 et 150 ?


2 Par quels entiers sont codés les droits rw- r- - r- - et rwx r-x r-x ?

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 40 / 77


Recherche de fichiers et de texte

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 41 / 77


Recherche de fichiers et de texte

Recherche de fichiers et de texte

Souvent nous avons besoin de chercher (et trouver) :


un ou plusieurs fichiers,
du texte dans un fichier.
Ce type de recherche peut aussi être assez compliquée : par exemple, on
pourrait vouloir trouver tous les fichiers d’un répertoire dont les noms se
terminent par .txt, ou chercher tous les mots d’un fichier qui contiennent la
chaîne de caractères "ai" (vais, verlaine, paille, etc.). Si l’on veut chercher
un ou plusieurs fichiers dont on ne spécifie qu’une partie du nom, nous
pouvons utiliser les métacaractères. Si l’on veut chercher du texte
contenant une suite de caractères spécifique, nous pouvons utiliser les
expressions régulières.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 42 / 77


Recherche de fichiers et de texte

Métacaractères

L’interpréteur de commandes permet de générer une liste de noms de


fichier en utilisant les métacaractères suivants, c’est-à-dire les caractères
spéciaux suivants :
* : désigne toutes chaînes de caractères, y compris la chaînes vide
Par ex. : a*b désigne tous les noms de fichiers commençant par a et finissant
par b
? : désigne un caractère quelconque
Par ex. : a ?b désigne tous les noms de fichier commençant par a, suivi d’un
caractère et finissant par b
[...] : désigne un caractère quelconque appartenant à la liste donnée entre crochets
Le - permet de représenter un intervalle.
Par ex. : a[a-z0-9A-Z]b désigne tous les noms de fichiers commençant par a
suivi d’un caractère alphanumérique et finissant par b
[!...] : désigne une liste de caractères à exclure
Par ex. : a[ !a-z]b désigne tous les noms de fichiers commençant par a suivi d’un
caractère autre qu’un caractère alphabétique en minuscule et finissant par b

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 43 / 77


Recherche de fichiers et de texte

Métacaractères

Bien que nous avons introduit les métacaractères à propos de la recherche


de fichiers (et donc pour parler ensuite de la commande find), nous
sommes autorisés à utiliser les mêmes métacaractères avec les commandes
pour afficher/manipuler les fichiers déjà connus : cp, mv, rm, ls, etc.
Exemple. La commande

cp ../*.txt .

copie tous les fichiers se terminant par la chaîne ".txt" du répertoire parent
dans le répertoire de travail.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 44 / 77


Recherche de fichiers et de texte

Expressions régulières
Les expressions régulières (comme les métacaractères) sont aussi des suites
de caractères permettant de faire des sélections. La syntaxe des expressions
régulières utilise les notations suivantes :
. : caractérise n’importe quel caractère
[...] : n’importe quel caractère de l’ensemble spécifié
- pour définir un intervalle
[ˆ...] : n’importe quel caractère hors de l’ensemble spécifié
ˆ : caractérise le début de ligne (ne pas confondre ˆ et [ˆ...])
Par ex. : ˆabc désigne une ligne commençant par abc
$ : caractérise la fin de ligne
Par ex. : abc$ désigne une ligne finissant par abc
* : 0 à n fois le caractère la précédent
Par ex. : a* représente de 0 à n fois a
Par ex. : aa* représente de 1 à n fois a
Par ex. : .* désigne n’importe quelle chaîne même vide
\c : banalise le métacaractère c qui perd sa signification particulière
ex : \. permet de rechercher un ., \∗ permet de rechercher un *,...

Exemple. L’expression régulière ˆ[0-9][0-9]*$ correspond à la ligne ne


contenant que des chiffres et non vide.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 45 / 77
Recherche de fichiers et de texte

Recherche d’un fichier


La commande find :
Pour chercher un fichier nous utilisons dans ce cours la commande find.
Cette commande effectue une recherche récursive (c’est-à-dire dans toute
l’arborescence à partir d’un répertoire spécifié). La syntaxe de la commande
est la suivante :
find <répertoire de recherche> <critère de recherche> <clé(s)> <action>

Plusieurs informations sont demandées pour que la recherche soit précise :


un répertoire de recherche duquel partir
un critère de recherche (par exemple, le nom, la date de modification, la dimension
en octets, etc.)
la(les) clé(s) de recherche (par exemple, pour une recherche sur la dimension, il
faudra spécifier la dimension que l’on souhaite)
une action (c’est-à-dire ce que la commande find va faire après que la recherche
est terminée). Une valeur très importante pour ce champ est -print qui permet
d’afficher sur la sortie standard les fichiers trouvés.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 46 / 77
Recherche de fichiers et de texte

La commande find :
Le champ <critère de recherche> peut être l’un des suivants :

-name : recherche sur le nom du fichier


Il faut spécifier la clé entre "et". Par ex. : find . -name "*.txt" -print
-perm : recherche sur les droits d’accès
Pour la clé, on peut utiliser la notation octale et symbolique.
La commande trouvera les fichiers qui ont exactement les droits spécifiés.
Par ex. : find . -perm u=rw,g=w -print affiche les fichiers avec droits d’accès
620.
-user : recherche sur le propriétaire
-type : recherche sur le type
(d=répertoire, c=caractère, f=fichier normal)
-size : recherche sur la taille
la clé doit être suivie par un caractère parmi c,w,b,k,M,G, en respectant la casse
Ce caractère correspond à l’unité de mésure : c=octets, w=mots de 2 octets,
b=blocs de 512 octets (valeur p. défaut), k=kilooctets, M=mégaoctets,
G=gigaoctets,
Par ex. : find . -size 4096c -print cherche les fichiers de taille 4096 octets.
-atime : recherche sur la date de dernier accès en lecture
-mtime : recherche sur la date de dernière modification du fichier
-ctime : recherche sur la date de création du fichier
La date dans les derniers trois cas est spécifiée par le nombre de jours (entier)
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 47 / 77
Recherche de fichiers et de texte

La commande find :
On peut utiliser les opérateurs logiques suivants :
ET logique : critère1 critère2
NON logique : ! critère1
OU logique : \( critère1 -o critère2 \)
Attention : Ne jamais confondre " (guillemets) avec ” (pair de quotes).
L’interpréteur de commandes va les traiter de façons différentes selon le
contexte.
Exemple. La ligne de commande find / -name "toto" -print cherche, à partir
du rép. racine /, les fichiers dont le nom est toto et affiche la liste.
La ligne find /usr -name "*.c" -print cherche, à partir de /usr, les fichiers qui
se terminent par ".c" (par ex. toto.c, tata.c, etc.) et affiche la liste. Ici * est un
métacaractère.
Ligne find . ! -user Olivier -print : tous les fichiers n’appartenant pas à Olivier
dans le rep. de travail.
Qu’est-ce que la ligne find . \( -name "a.out" -o -name "*.c" \) -print fait, à
votre avis ?.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 48 / 77
Recherche de fichiers et de texte

Recherche de texte

La commande grep :
Pour chercher du texte, on utilise la commande grep, qui a besoin de :
une clé de recherche (appelée motif dans ce contexte)
le nom du fichier dans lequel chercher le(s) mot(s)
En conséquence, la syntaxe de la commande grep est la suivante :

grep [option] ’motif’ nom_fichier

On peut utiliser les expressions régulières pour décrire le motif et les


métacaractères pour spécifier les fichiers considérés.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 49 / 77


Recherche de fichiers et de texte

Recherche de texte

La commande grep :
Le champ option peut être :

-v : affiche les lignes ne contenant pas la chaîne


-c : compte le nombre de lignes contenant la chaîne
-n : chaque ligne contenant la chaîne est numérotée
-x : ligne correspondant exactement à la chaîne
-l : affiche le nom des fichiers qui contiennent la chaîne

Les options peuvent être combinées comme dans les autres commandes. La
commande affiche les lignes contenant le motif (sauf si l’on utilise les
options -c et -l).
Exemple. grep -vn ’bla’ fich.txt affiche les lignes du fichier fich.txt qui ne
contiennent pas la chaîne “bla” et les numérote.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 50 / 77


Manipulation de texte : l’éditeur sed

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 51 / 77


Manipulation de texte : l’éditeur sed

l’éditeur sed
Le programme sed est un éditeur en ligne de commande non interactif : il
lit les lignes d’un fichier une à une (ou provenant de l’entrée standard), leur
applique un certain nombre de commandes d’édition et renvoie les lignes
résultantes sur la sortie standard. Attention : sed ne modifie pas le fichier
traité, il écrit tout sur la sortie standard. La syntaxe générale de la
commande est la suivante :
sed [-n] [-e commande][-f fichier de commandes] [fichier]
avec :

-n : écrit seulement les lignes spécifiées (en utilisant p dans le champ


commande) sur la sortie standard.
-e : permet de spécifier les commandes à appliquer sur le fichier.
Afin d’éviter que le Shell interprète certains caractères, il faut
encadrer la commande avec des ’(quotes) ou des " (guillemets).
-f : les commandes sont lues à partir d’un fichier.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 52 / 77
Manipulation de texte : l’éditeur sed

l’éditeur sed
La syntaxe générale des commandes est de la forme

caractérisation_des_adresses commandes

avec caractérisation_des_adresses de la forme

: toutes les lignes


num : la ligne num
num1,num2 : les lignes entre les lignes num1 et num2
/RE/ : les lignes correspondant à l’expression régulière RE
/RE1/,/RE2/ : les lignes entre la première ligne correspondant à l’expression régulière
RE1 et la première ligne correspondant à l’expression régulière RE2.

Exemple. La commande sed -n 1,4p toto.txt n’écrit que les lignes


spécifiées (option -n) du fichier toto.txt, c’est-à-dire les premières 4 lignes
(commande 1,4p).
Attention : ne pas mettre d’espaces entre caractérisation des adresses et
commandes.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 53 / 77
Manipulation de texte : l’éditeur sed

l’éditeur sed
La commande de substitution s. La commande de substitution s permet
de changer la première ou toutes les occurrences d’une chaîne par une
autre.
La syntaxe :
’l1,l2s/RE/remplacement/flags’
remplace les expressions régulières RE par la chaîne de remplacement entre
les lignes l1 et l2. Dans ce cours, le champ flag sera :
g : global, c’est-à-dire toutes les occurrences de la chaîne RE
(par défaut, seule la première occurrence est remplacée).
p : imprime la ligne modifiée (utile avec l’option -n).
w fichier : écrit la ligne dans le fichier spécifié en plus de la sortie
standard.
On peut aussi spécifier un nombre entier n dans le champ flag. Dans ce
cas, la commande s sera appliquée uniquement à la n-ème chaîne
rencontrée correspondante à RE
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 54 / 77
Manipulation de texte : l’éditeur sed

l’éditeur sed

Exemple. On présente plusieurs utilisations de la commande s :


sed -e ’1,3s/toto/TOTO/’ fichier
change la première occurrence de la chaîne toto par TOTO (la première chaîne
toto rencontrée dans le texte uniquement) dans les premières 3 lignes.
sed -e ’s/toto/TOTO/3’ fichier
change la troisième occurrence de la chaîne toto par TOTO (la troisième chaîne
toto rencontrée dans le texte uniquement).
sed -e ’s/toto/TOTO/g’ fichier
toutes les chaîne toto rencontrées sont changées.
sed -ne ’s/toto/TOTO/p’ fichier
seules les lignes modifiées sont affichées sur la sortie standard.
sed -e ’s/toto/TOTO/w resultat’ fichier
en cas de substitution la ligne en entrée est inscrite dans un fichier résultat. On
peut utiliser des expressions régulières :
sed -e ’s/[Ff]raise/FRAISE/g’ fichier
substitue toutes les chaînes Fraise ou fraise par FRAISE.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 55 / 77


Manipulation de texte : l’éditeur sed

l’éditeur sed
La commande de suppression d. La commande de suppression d supprime
les lignes comprises dans un intervalle donné. La syntaxe est similaire à
celle de la commande s. La commande !d supprime les lignes qui ne
satisfont pas un tel critère.
Exemple.
sed -e ’20,30d’ fichier
supprime les lignes 20 à 30 du fichier fichier.
On peut utiliser des expressions régulières :
sed -e ’/toto/d’ fichier
supprime les lignes contenant la chaîne toto.
sed -e ’/toto/ !d’ fichier
supprime les lignes ne contenant pas la chaîne toto.

Attention : les lignes ne sont pas vraiment supprimées, mais pas affichées.
D’autres commandes. Utiliser la commande man sed pour se renseigner
sur les commandes a, i, p, l, =, q, r, w.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 56 / 77
Les processus

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 57 / 77


Les processus

Les Processus

Un processus est un programme en cours d’exécution.


On distingue deux types de processus :
Le processus système (daemons) : assure des services généraux
accessibles à tous les utilisateurs du système.
Le propriétaire est le root et il n’est sous le contrôle d’aucun terminal.
Le processus utilisateur : dédié à l’exécution d’une tâche particulière.
Le propriétaire est l’utilisateur qui l’exécute et il est sous le contrôle du
terminal â partir duquel il a été lancé.
Toute exécution d’un programme déclenche la création d’un processus
dont la durée de vie est égale à la durée d’exécution du programme.
Le système alloue à chaque processus un numéro d’identification
unique : PID (Process IDentifier).
Tout processus est créé par un autre processus : son processus père.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 58 / 77


Les processus

États d’un processus

Prêt (R) : le processus attend que le processeur lui soit affecté.


Actif(R) : le processus est en exécution.
Endormi (S pour <20s ou I pour >20s) : le processus est en attente
de l’arrivée d’un événement (par exemple, une réponse du terminal).
Zombi (Z) : le processus a pris fin sans libérer ses ressources (peut
être bloqué jusqu’à l’arrêt de la machine).
Suspendu (T) : le processus a été interrompu et attend l’arrivée d’un
signal de reprise.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 59 / 77


Les processus

Les processus

Exécution d’une commande


Les principales modes d’exécution d’une commande :
mode interactif : commande lancée à partir d’un terminal. Le contrôle du
terminal n’est rendu à l’utilisateur qu’à la fin de l’exécution de la commande.
<ctrl-c> : interrompre la commande
<ctrl-z> : suspendre la commande
mode en arrière plan : permet de rendre immédiatement le contrôle à
l’utilisateur (commande lancée suivie du caractère &). Si le terminal est
fermé, la commande en arrière plan est interrompue automatiquement. Pour
éviter ce problème, il faut lancer la commande sous le contrôle de la
commande nohup (syntaxe : nohup nom commande &).

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 60 / 77


Les processus

Les processus

La commande ps
La commande ps donne la liste des processus en cours. Par défaut, elle
affiche tous les processus actifs de l’utilisateur qui a lancé la
commande ps et qui appartiennent au même terminal depuis lequel ps
a été invoquée.
On décrit les lignes de commandes les plus utiles dans ce contexte :
ps -u utilisateur : affiche les processus lancés par utilisateur
ps -e : affiche tous les processus dans le système
ps -f : génère pour chaque processus :
UID : nom utilisateur
PID : numéro du processus
PPID : numéro du processus père
STIME : l’heure de lancement du processus
TTY : le nom du terminal
TIME : temps cumulé d’exécution du processus
CMD : commande exécutée

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 61 / 77


Les processus

Les processus

La commande kill et les signaux


Au cours de l’exécution d’un processus, il est possible d’agir sur son
déroulement en lui envoyant un signal. Unix définit de façon standard
un certain nombre de signaux dont :
SIGINT (signal 2) : interrompre l’exécution d’un processus,
SIGKILL (signal 9) : arrêter définitivement l’exécution d’un processus
(ne peut pas être ignoré),
SIGTSTP (signal 20) : suspendre temporairement l’exécution d’un
processus,
SIGCONT (signal 18) : reprendre l’exécution d’un processus
précédemment suspendu par l’envoi d’un signal SIGTSTP.
Un signal peut être envoyé par :
le système (ex : signaux d’erreur),
un autre processus,
l’utilisateur : soit : exp :( <ctrl-z> pour SIGTSTP, <ctrl-c> pour
SIGINT), soit Kill
kill -signal PID
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 62 / 77
Les processus

Le job control

Un job est une ligne de commande shell. Chaque job est numéroté de 1 à
N par le shell. Un job peut se trouver dans trois états :
avant plan : Le job s’exécute et vous n’avez pas la main sur le shell.
arrière plan : Le job s’exécute et vous avez la main sur le shell.
suspendu : Le job est en attente, il ne s’exécute pas.
Les commandes jobs, bg, fg.
jobs : permet de lister les jobs en cours
<ctrl-z> : suspendre une commande en avant plan
bg %num job : basculer de suspendu à arrière plan
fg %num job : passer en avant plan
<ctrl-c> : tuer une commande en avant plan

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 63 / 77


Les processus

Le job control

Dans la figure suivante nous observons les possibles actions accomplies par
ces commandes.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 64 / 77


Les fichiers standards et les redirections

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 65 / 77


Les fichiers standards et les redirections

Les fichiers standards et les redirections

Tout processus communique avec l’extérieur par le biais de trois fichiers


logiques appelés fichiers standard d’entrées/sorties :

Le fichier entrée standard (stdin de numéro 0) sur lequel le processus


lit ses données,
Le fichier sortie standard (stdout de numéro 1) sur lequel le processus
écrit ses données,
Le fichier sortie erreur standard (stderr de numéro 2) pour les
messages d’erreur.

Quand un processus naît, ces trois fichiers sont ouverts. Par défaut, ils sont
associés au terminal de lancement : le clavier pour le fichier d’entrée
standard, l’écran pour la sortie standard et pour la sortie erreur standard.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 66 / 77


Les fichiers standards et les redirections

Les fichiers standards et les redirections

Il est possible de rediriger les E/S standards d’un processus c’est-à-dire de


leur associer un fichier autre que le terminal. Pour cela, on utilise la syntaxe
suivante :
cmd < fich : redirige l’entrée standard de commande sur le fichier fich
(qui doit exister et être lisible par l’utilisateur). Ceci signifie
que commande lit ses données en entrée dans le fichier fich.
cmd n > fich : redirige la sortie n de commande sur le fichier fich (avec
écrasement de celui-ci s’il existe et création s’il n’existe pas).
cmd n > > fich : redirige la sortie n de commande sur le fichier fich (sans
écrasement mais en ajoutant).
cmd > fich 2>&1 : redirige la sortie standard et la sortie erreur standard de
commande sur le fichier fich.

Exemple : ls -l > resultat.txt


wc < resultat.txt

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 67 / 77


Les fichiers standards et les redirections

Enchaînement de processus

Il est possible sur une même ligne de commande de lancer plusieurs


processus. Selon la syntaxe utilisée, les résultats obtenus seront différents.
Lancement en séquence de plusieurs commandes. Pour lancer en séquence
plusieurs commandes on utilise un ; séparant les commandes. Par exemple
la ligne de commande,

commande1 ; commande2 ; commande3 > fich

crée le processus qui exécute commande1, puis quand commande1 est


terminé, crée le processus qui exécute commande2 ...
En conséquence, dans l’exemple précédent, seule la sortie standard de
commande3 est redirigée vers fich.
Pour rediriger les trois commandes :

(commande1 ; commande2 ; commande3) > fich

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 68 / 77


Les fichiers standards et les redirections

Enchaînement de processus
Lancement concurrent de processus communiquant par un tube (pipe).
On peut aussi connecter la sortie standard d’un processus à l’entrée
standard d’un autre ; les deux processus s’exécutent alors en parallèle et
échangeant des données par l’intermédiaire de zones mémoires appelées
tubes. Pour cela, on sépare les invocations de deux programmes par le
symbole «|».
Exemple :

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 69 / 77


Les fichiers standards et les redirections

Enchaînement de processus
Lancement concurrent de processus communiquant par un tube (pipe).
La syntaxe à utiliser à ce propos est la suivante :
com1 |com2 |...|comn
Le système crée n-1 tubes et n processus. Ensuite :
le processus qui exécute com1 a sa sortie standard redirigée vers le premier
tube, son entrée standard étant celle définie par défaut, à savoir le clavier,
le processus qui exécute com2 a son entrée standard redirigée vers le premier
tube et sa sortie standard redirigée vers le deuxième tube,
...
le processus qui exécute comn a son entrée standard redirigée vers le n-1ème
tube, sa sortie standard étant celle par défaut, à savoir l’écran.
Les n processus coexistent et se partagent l’accès au processeur. Le système se
charge de leur synchronisation : les processus lecteurs sont mis en attente tant
que leur tube en entrée est vide, les processus écrivains sont mis en attente si leur
tube en sortie est plein.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 70 / 77
Les interpréteurs de commandes

Outline

1 Introduction
2 Présentation de Linux, Structure et principes de fonctionnement
3 Le Shell Linux
4 Le système de fichiers
5 Droits d’accès aux fichiers
6 Recherche de fichiers et de texte
7 Manipulation de texte : l’éditeur sed
8 Les processus
9 Les fichiers standards et les redirections
10 Les interpréteurs de commandes

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 71 / 77


Les interpréteurs de commandes

Les interpréteurs de commandes


L’interpréteur de commandes, le shell, a pour rôle de traduire les
commandes saisies par l’utilisateur afin que le système puisse les exécuter.
Un shell permet également d’exécuter des fichiers, appelés scripts,
contenant une suite de commandes plus ou moins complexes. Il existe un
certain nombre de shells que l’on peut séparer en deux familles :
La famille des Bourne shell :
sh : le plus ancien développé chez AT&T par Steven Bourne fin 1970,
ksh : le korn shell développé chez AT&T par David Korn en 1980,
bash : le bourne again shell développé par la Free Software Foundation
en 1989,
zsh : un des derniers nés (1990) de la famille.
La famille des C-shell :
csh : dont le langage de programmation est très proche du langage C,
tcsh : compatible avec le C-shell et beaucoup plus complet.

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 72 / 77


Les interpréteurs de commandes

Programmation shell

Le shell n’est pas qu’un simple interpréteur de commandes, mais dispose


d’un véritable langage de programmation avec notamment une gestion des
variables, des tests et des boucles, des opérations sur variables, des
fonctions...
Toutes les instructions et commandes sont regroupées au sein d’un script.
Lors de sont exécution,chaque ligne sera lue une à une et exécutée. Une
ligne peut se composer de commandes, de commentaires ou être vide.
Plusieurs instructions par lignes sont possibles, séparées par le « ; » ou liées
conditionnellement par « && » ou « || ». Le « ; » est l’équivalent d’un
saut de ligne.
Exemple : ls -l ; ls ; date
wc resultat.txt ; pwd

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 73 / 77


Les interpréteurs de commandes

Programmation shell
Il est aussi possible de grouper les commandes. Quand on exécute les
commandes suivantes :
uname -a ; pwd ; ls -l >resultat.txt &
seule la dernière commande est exécutée en tâche de fond et seul son
résultat est redirigé dans le fichier resultat.txt. Une solution serait :
uname -a >resultat.txt & ; pwd »resultat.txt & ; ls -l »resultat.txt &
Une seconde possibilité est l’utilisation des accolades ....
uname -a ; pwd ; ls -l ; > resultat.txt &
Les caractères « && » et « || » permettent d’effectuer une exécution
conditionnelle.
commande1 && commande2
commande1 || commande2
La commande située après « && » sera exécutée uniquement si la
commande précédente a abouti. La commande située après « || » ne sera
exécutée que si la commande précédente a echoué.
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 74 / 77
Les interpréteurs de commandes

Programmation shell
Exécution de scripts. Supposons d’avoir créé un fichier contenant les
commandes à exécuter et que ce fichier s’appelle script1. On peut exécuter
script1 par la ligne de commande :
bash script1
De manière plus détaillée, la ligne de commande lance un nouveau
processus bash, lui fait lire le fichier script1 et exécuter les commandes
contenues dans ce script. Nous avons à disposition une autre façon
d’exécuter le script : on peut demander au noyau du système d’exploitation
de lancer bash et de lui donner script1 comme argument. Pour utiliser cette
méthode, il faut que deux conditions soient satisfaites :
La première ligne du script commence par # !/bin/bash (ce qui
permet au noyau de lancer bash)
le fichier script1 soit exécutable (utiliser chmod pour le rendre
exécutable)

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 75 / 77


Les interpréteurs de commandes

Programmation shell
Les paramètres d’un script. Nous pouvons aussi passer des arguments au
script. Les arguments d’un script ne sont que des mots qui suivent le nom
du script dans la ligne de commande. Par exemple, si script1 est un script
bash dans notre répertoire de travail, la commande
./script1 arg1 arg2 . . . argm
Les commandes à l’intérieur du script peuvent utiliser ces arguments. Elles
peuvent aussi utiliser les informations sur le script même. Cela se fait grâce
à certains paramètres spéciaux.
Le paramètre contenant le nom du script est 0. Utilisation : "$0"
(remarquez les guillemets).
Le paramètre contenant le k-ième argument est k. Utilisation : "$1"
(premier argument), "$2" (deuxième argument), etc.
Le paramètre @ contient tous les mots des paramètres de position.
L’expansion "$@" permet d’obtenir la liste de ces mots.
Le paramètre # contient le nombre d’arguments. Utilisation : $#
Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 76 / 77
Les interpréteurs de commandes

Programmation shell

Exemple : On considère le script suivant (appellé example) :


# !/bin/bash
echo Script "$0"
echo $# Arguments :
echo "$@"
echo Troisième argument :
echo "$3"
Si l’on tape bash exemple arg1 arg2 "mon nom" la sortie sera :
Script exemple
3 Arguments :
arg1 arg2 mon nom
Troisième argument :
mon nom

Hiba Ouni (IsetCom Tunis) Systèmes d’Exploitation LINUX 2020/2021 77 / 77

Vous aimerez peut-être aussi