Académique Documents
Professionnel Documents
Culture Documents
Hiba Ouni
IsetCom Tunis
2020/2021
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
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
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
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.
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.
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.
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.
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.
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
Présentation de Linux
Structure de Linux
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.
Structure de 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
Le Shell Linux
Le Shell Linux
Exemple :
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.
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
Le système de fichiers
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 /
Répertoire personnel
Commandes à connaître
Commandes à connaître
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
[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).
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
Métacaractères
Métacaractères
cp ../*.txt .
copie tous les fichiers se terminant par la chaîne ".txt" du répertoire parent
dans le répertoire de travail.
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 *,...
La commande find :
Le champ <critère de recherche> peut être l’un des suivants :
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 :
Recherche de texte
La commande grep :
Le champ option peut être :
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.
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
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 :
l’éditeur sed
La syntaxe générale des commandes est de la forme
caractérisation_des_adresses commandes
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
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
Les Processus
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
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
Le job control
Dans la figure suivante nous observons les possibles actions accomplies par
ces 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
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.
Enchaînement de processus
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 :
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
Programmation shell
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)
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