Vous êtes sur la page 1sur 214

Université Sultan Moulay Slimane

Faculté Polydisciplinaire
Département de Mathématiques et Informatique
Beni Mellal

Système d’exploitation I
SMI
Semestre 3

Pr: Anouar DARIF


anouar.darif@gmail.com

2019/2020
Anouar DARIF
Anouar DARIF
Système d’exploitation I
Système d’exploitation I
SMI_S3
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel
SMI_S3

• Architecture simplifiée d'un ordinateur


 Une unité pour effectuer les traitements, également appelée unité
centrale ou processeur,
 Une unité pour contenir les programmes à exécuter qui est le lieu de
Système d’exploitation I

travail dans un ordinateur appelée mémoire centrale,


 Des périphériques de stockage permanent pour y enregistrer les
travaux effectués en mémoire centrale tel que le disque dur,
 Des dispositifs pour entrer et récupérer des données appelés
périphériques d'entrée-sortie: un écran, une souris, un clavier, un
lecteur de disquettes et un lecteur de CD-ROM ou DVD-ROM
Anouar DARIF

2
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel
• La carte mère
La carte mère est une plaque de résine contenant à l'intérieur et sur les
deux faces une fine couche de cuivre sur laquelle est imprimé le circuit
imprimé, On y trouve les éléments suivants:
Système d’exploitation I

 Le microprocesseur
 La mémoire vive RAM(Random Access Memory): La mémoire vive
RAM représente le lieu de travail dans un ordinateur à savoir qu’un
programme stocké sur le disque dur est chargé en mémoire centrale
où ses instructions seront accédées une à une pour être exécutées
par le processeur. La RAM est une mémoire volatile c'est-à- dire que
son contenu serait perdu en cas de coupure d’électricité
 La mémoire morte ROM(Read Only Memory): Elle contient les
Anouar DARIF

programmes du BIOS qui gèrent le chargement du système et les


entrées-sorties. On distingue plusieurs puces ROM tel que la PROM
(Programmable ROM) et EPROM (Erasable Programmable ROM). 3
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel
• La carte mère
 L'horloge qui permet de cadencer le fonctionnement du processeur,
du bus. Sa fréquence caractérise la carte mère. Elle est
généralement très inférieure à celle du processeur(de l'ordre de
Système d’exploitation I

quelques centaines de MHz).


 Un ensemble de bus: un bus est un ensemble de fils de cuivre
incrustés dans la carte mère qui permettent de véhiculer
l'information. Le bus se caractérise par le nombre de fils qui le
composent. Si le nombre de fils est de 64,on parle alors de bus
64bits. Il est également caractérisé par sa fréquence de
fonctionnement.
 Le "chipset" ou "jeu de composants« soudé sur la carte mère. Le
Anouar DARIF

chipset régit tous les échanges au sein du PC en aiguillant les


données sur les différents bus de la carte mère.
4
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel
• L'unité centrale ou microprocesseur
L'unité centrale est un circuit intégré qui réalise les traitements et les
décisions, elle se compose:
Système d’exploitation I

 d'une unité de commande et de contrôle UCC: elle recherche les


instructions, les décode et en supervise leur exécution par l'UAL.
 d'une unité arithmétique et logique UAL: elle réalise les traitements
qu'ils soient arithmétiques ou logiques.
 De registres: ils sont des zones mémoires internes au processeur
destinées à accueillir les données, les instructions et les résultats.
 d'une horloge qui rythme le processeur: à chaque top d'horloge le
processeur effectue une instruction, ainsi plus l'horloge a une
Anouar DARIF

fréquence élevée, plus le processeur effectue d'instructions par


seconde(MIPS: Millions d'instruction par seconde). Par exemple un
ordinateur ayant une fréquence de1GHz(1000MHz) effectue
5
1000millions d'instructions par seconde.
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel
• L'unité centrale ou microprocesseur
 d'un bus interne qui relie ces unités aux registres.
De nos jours d'autres composants sont intégrés au processeur tels que:
Système d’exploitation I

 Une unité flottante pour le calcul des opérations sur les nombres
réels.
 La mémoire cache: c'est une mémoire de petite taille, à accès plus
rapide que la mémoire principale. Elle permet au processeur de se
"rappeler" les opérations déjà effectuées auparavant. La taille de la
mémoire cache est généralement de l'ordre de quelques centaines
de Ko. Ce type de mémoire résidait sur la carte mère, sur les
ordinateurs récents ce type de mémoire est directement intégré dans
le processeur.
Anouar DARIF

 Les unités de gestion mémoire servent à convertir des adresses


logiques en des adresses réelles situées en mémoire.
6
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel

Un ordinateur doit être capable de faire fonctionner un programme,


pour cela il faut que la machine puisse effectuer un certain nombre
d'opérations préparatoires afin d'assurer les échanges entre l'unité
centrale de traitement, la mémoire, et les périphériques.
Système d’exploitation I

UCT Mémoire E/S

Opération des échanges


Anouar DARIF

Ces opérations sont assurées par un ensemble de programmes appelé


le système d’exploitation OS (Operating System).
7
SMI_S3
 Introduction sur les systèmes d’exploitation
 Notions de systèmes d'exploitation
Un système d'exploitation est un ensemble de programmes permettant
à son utilisateur de disposer d'un ensemble de services élaborés à partir
des ressources de la machine sur laquelle il s'exécute.il doit assurer :
 il contrôle l'accès à toutes les ressources de la machine,
Système d’exploitation I

 chargement et lancement des programmes.


 gestion du (des) processeur(s)
 gestion des périphériques et entrées/sorties.
 gestion de la mémoire principale et secondaire.
 ...
Applications

OS
Anouar DARIF

Bios
Matériel 8
SMI_S3
 Introduction sur les systèmes d’exploitation
 Rappels sur le matériel

les périphériques varient d'un ordinateur à un autre, en particulier sur


un PC. On a introduit donc la notion des pilotes de périphériques
(instructions servant à piloter un périphérique, en anglais drivers)
différents selon les types d'ordinateurs et les types de périphériques.
Système d’exploitation I

OS

Pilotes
Anouar DARIF

Matériel

9
SMI_S3
 Introduction sur les systèmes d’exploitation
 Fonctions et caractéristiques d’un SE
Système d’exploitation I
Anouar DARIF

10
SMI_S3
 Introduction sur les systèmes d’exploitation
 Fonctions et caractéristiques d’un SE
 Gestion du processeur
Le système doit gérer l'allocation du processeur aux différents
programmes pouvant s'exécuter.
Système d’exploitation I

 Gestion de la mémoire
Le système doit gérer l'allocation de la mémoire centrale entre les
différents programmes pouvant s'exécuter. La gestion de la mémoire se
fait selon le principe de la mémoire virtuelle. A un instant donné, seules
sont chargées en MC, les parties de code et données utiles à l'exécution
 Gestion de la concurrence
Plusieurs programmes coexistent en mémoire centrale et peuvent
vouloir communiquer pour échanger des données . Il faut donc
synchroniser l'accès aux données partagées afin de maintenir leur
Anouar DARIF

cohérence. Le système offre des outils de communication et de


synchronisation entre programmes
11
SMI_S3
 Introduction sur les systèmes d’exploitation
 Fonctions et caractéristiques d’un SE
 Gestion des objets externes

La mémoire centrale est une mémoire volatile. Aussi, toutes les


données devant être conservées au delà de l'arrêt de la machine,
Système d’exploitation I

doivent être stockées sur une mémoire de masse (disque dur, disquette,
USB, CD...)
 Gestion de la protection
Le système doit fournir des mécanismes garantissant que ses
ressources (CPU, mémoire, fichiers) ne peuvent être utilisées que par les
programmes auxquels les droits nécessaires ont été accordés. Il faut
protéger le système et la machine des programmes utilisateurs (mode
d'exécution utilisateur et superviseur
Anouar DARIF

12
SMI_S3
 Introduction sur les systèmes d’exploitation
 Les principaux systèmes d'exploitation
 MS-DOS est le plus connu des premiers systèmes d'exploitation
pour PC
• Il est mono-utilisateur et mono-tâche. On a du greffer des
Système d’exploitation I

couches logicielles pour répondre aux évolutions matérielles


et aux demandes des utilisateurs
• MS-DOS a été rapidement supplanté par les systèmes
Windows

 Mac OS: C'est le système d'exploitation d’Apple


• Il a été livré pour le Macintosh en1984
• La version actuelle est la X(prononcer dix). Mac OS X se
Anouar DARIF

distingue par un noyau Darwin qui est un open source


• Mac OS est un des principaux rivaux des Windows
13
SMI_S3
 Introduction sur les systèmes d’exploitation
 Les principaux systèmes d'exploitation
 Unix étant distribué gratuitement, il a donné naissance à de
nombreuses versions:
• Les versions les plus connues Unix SYSTEM V (évolution de la
Système d’exploitation I

version initiale d'AT&T et Bell) et Unix BSD


• Les principaux Unix du marché sur Intel sont: Open Server et
Unixware de SCO(Santa Cruz Operation), Solaris(Sun
Microsystems), BSD(Berkeley),…
• Trois Unix dominent le monde des serveurs: HP/UX,
SunSolaris, IBMAIX
 Linux a pris des parts de marché aux Unix, à Novell Netware et à
Windows NT-2000 serveur
Anouar DARIF

• Il s'est imposé dès la fin du 20ème siècle.


• Principales distributions de Linux: RedHat, Debian, fedora,
Caldera, Ubuntu,… 14
SMI_S3
 Introduction sur les systèmes d’exploitation
 Les principaux systèmes d'exploitation
 La famille des Windows:
• Microsoft propose en 1992 Windows 3.10 et Windows pour
Workgroups 3.11 dont les mots clés sont Multifenêtres et
Multitâches coopératif. En1993, on voit apparaître la première
Système d’exploitation I

version de Windows NT3.1 suivie en 1994 par NT3.5


• L'année1995, verra la sortie du fort célèbre Windows 95
• En1996, Windows NT 4 avec deux versions station de travail et
Serveur. Ensuite,
• Windows Terminal Server: un système qui simule un
environnement multi-utilisateurs et prend en charge la
connexion de plusieurs terminaux
• En 1998 Windows 98
Anouar DARIF

• En 2000, Microsoft commercialise Windows 2000 professionnel


et serveur, Windows Millenium, suivi de Windows XP familial et
serveur Windows 2003 (initialement baptisé. NET)sort en 2003
15
• VISTA, Windows Seven, Windows7, Windows8 , Windows10,…
SMI_S3
 Système d'exploitation UNIX
 Présentation d’UNIX

 UNIX est un système d'exploitation(Operating System)

 UNIX est très utilisé en informatique scientifique, et pour


Système d’exploitation I

les serveurs réseaux : la grande majorité des serveurs sur


Internet fonctionnent sous UNIX.

 Par contre, sa relative complexité d’utilisation l’écarte des


applications grand public
Anouar DARIF

16
SMI_S3
 Système d'exploitation UNIX
 Caractéristiques d’UNIX
 Portabilité : écrit en langage de haut niveau C.
 Multi-utilisateurs : Plusieurs utilisateurs peuvent se connecter et
travailler en même temps. Chaque utilisateur a son environnement
Système d’exploitation I

personnel.
 Multi-tâches : plusieurs tâches simultanément, gérées par un
mécanisme préemptif.
 Interactif : Il est possible de dialoguer avec l'ordinateur, de lancer des
processus (tâches) en arrière plan et en mode différé (batch).
 Un système de fichiers hiérarchisé: organisé en arborescence
 Un mécanisme de protection - identification des utilisateurs par mot
de passe - protection des fichiers (droits d’accès) - Un super-
Anouar DARIF

utilisateur ( le root)

17
SMI_S3
 Système d'exploitation UNIX
 Caractéristiques d’UNIX

 Une vision simplifiée par l'utilisateur des entrées/sorties : Les


périphériques sont représentés par des noms de fichier, et peuvent
être utilisés comme des fichiers ordinaires.
Système d’exploitation I

 Interface utilisateur interactive (shell) : elle est constituée d’un


programme séparé du noyau permettant à l’utilisateur de choisir
son environnement de travail. Elle intègre un langage de
commandes très sophistiqué (scripts).
 Gestion de la mémoire virtuelle : un mécanisme d’échange entre la
RAM et le disque dur permet de pallier un manque de RAM et
optimise le système
 Processus réentrants : les processus exécutant le même
programme utilisent une seule copie de celui-ci en RAM
Anouar DARIF

18
SMI_S3
 Système d'exploitation UNIX
 Structure d’UNIX
Système d’exploitation I

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


• L'initialisation du système (boot)
• La gestion des processus
• La gestion des fichiers
Anouar DARIF

• La gestion des Entrées/Sorties


• La gestion de la mémoire ( mémoire virtuelle paginée)
19
SMI_S3
 Système d'exploitation UNIX
 Structure d’UNIX
• L’utilisateur peut communiquer avec le noyau par l'intermédiaire d'un
shell (interpréteur de commandes)
• Les utilitaires sont des outils d'interfaçage avec le système, de
programmation et de communication (compilateur C, éditeurs de
Système d’exploitation I

texte, outils de développement…).


• Le shell (coquille) est un programme qui interprète vos commandes et
les transmet au noyau Unix. Ils permettent en plus de définir un
environnement.
• Plusieurs variantes, livrées en général avec le SE :
 le Bourne shell sh
 le C-shell csh
 le tcsh (successeur de csh) tcsh
Anouar DARIF

 le Korn shell (successeur de Bourne) ksh


 le Bash (Bourne again shell) bash (celui par défaut sous Linux).
• L’environnement shell est défini par des variables dont la valeur peut
20
être modifiée par l’utilisateur. Ex: $PATH.
SMI_S3
 Système d'exploitation UNIX
 Utilisateur et accès au système

 Chaque utilisateur doit avoir un compte protégé par un mot de


passe.
 Pour entrer au système (login), il doit fournir :
Système d’exploitation I

• le nom d’utilisateur : créé par l’administrateur.


• le mot de passe correspondant : il peut être changé par
l’utilisateur.
 Chaque utilisateur dispose de ses propres fichiers, dont il peut
autoriser ou non l’accès aux autres utilisateurs.
 Chaque utilisateur dispose d’un certain nombre de droits
(accès à certains périphériques, etc).
Anouar DARIF

21
SMI_S3
 Système d'exploitation UNIX
 Utilisateur et accès au système
 L’utilisateur appartient à un groupe donné, par défaut, il a les
mêmes droits que son groupe.
 Pour déterminer les droits sur un fichier donné, on distingue 3
parties :
Système d’exploitation I

• L’utilisateur (user),
• Son groupe ( group)
• Les autres (others).
 Les droits sont :
• la lecture,
• l’écriture
• l’exécution.
Anouar DARIF

 Le super user (root) est un utilisateur qui a tous les droits sur le
système, il s’occupe de l’administration du système ( entre autres
22
ajouter de nouveaux utilisateurs).
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Le système de fichiers UNIX est sous forme d’arborescence dont la
racine est ‘‘/’’.
Système d’exploitation I

 Un fichier dans UNIX est une séquence d'octets, le noyau n'impose


aucune structure spécifique aux fichiers.

 Le rôle d'un fichier est de conserver, de traiter et transmettre de


l'information

 Sous système Unix, tout est fichier, il n’y a pas de notions de


disques, partition de disques, périphériques,
Anouar DARIF

• les fichiers sont regroupés dans des répertoires.


• les répertoires contiennent soit des fichiers, soit d'autres
23
répertoires
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Chaque utilisateur a son répertoire sous le répertoire /home/
 Les autres répertoires sous la racine sont des répertoires systèmes.
 Chemin : une suite de répertoires séparer par / qui permet
Système d’exploitation I

d’accéder à un répertoire ou un fichier donné.


 On distingue 2 types de chemins:
• Chemin absolu: la suite des répertoires à traverser en partant de
la racine.
• Chemin relatif: la suite des répertoires à traverser en partant du
répertoire courant.
 Deux répertoires spéciaux :
• Le répertoire courant noté ‘.’ (working directory).
Anouar DARIF

• Le père noté ‘..’ correspond à un niveau supérieur dans


l’arborescence.
24
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Les différentes catégories de fichiers
• Fichiers normaux
texte : courrier, sources des programmes, scripts, configuration ...
exécutables : programmes en code binaire
Système d’exploitation I

• Fichiers répertoires
ce sont des fichiers conteneurs qui contiennent des références à
d'autres fichiers. Véritable charpente de l'arborescence, ils permettent
d'organiser les fichiers par catégories

• fichiers spéciaux
situés dans /dev, ce sont les points d'accès préparés par le système aux
périphériques..
Anouar DARIF

• fichiers liens symboliques


Ce sont des fichiers qui ne contiennent qu'une référence (un pointeur)
à un autre fichier. Cela permet d'utiliser un même fichier sous plusieurs
25
noms sans avoir à le dupliquer sur le disque
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
• Sou Unix, on a un seul arbre qui a pour racine est désignée par «/ »
• Tout disque externe, CD , Clé USB, partition, ..) est vu comme un
Système d’exploitation I

sous arbre qui se rattache à l’arbre principal. Le rattachement du


sous arbre se fait automatiquement ou par la commande «mount».
Anouar DARIF

26
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
• / : le répertoire racine
• /bin : les fichiers exécutables (en binaire) (initialisation du système
Système d’exploitation I

+ commandes "essentielles")
• /boot : le noyau vmlinuz et les fichiers de démarrage
• /dev : répertoire de fichiers spéciaux, qui servent de canaux de
communication avec les périphériques (disques, adaptateur réseau,
cartes son etc...)
• /etc : les fichiers de configuration du système et les principaux
scripts de paramétrage
 /etc/rc.d scripts de démarrage du système
Anouar DARIF

 /etc/X11 scripts de configuration du serveur X


 /etc/sysconfig configuration des périphériques
27
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
 /etc/passwd: fichier contenant la liste des différents comptes
 /etc/cron description des tâches périodiques à effectuer
Système d’exploitation I

 /etc/skel fichiers recopiés dans le rép. personnel d'un nouvel


utilisateur
• /home : la racine des répertoires personnels des utilisateurs
• /lib : les bibliothèques et les modules du noyau
• /mnt : la racine des points de montage des systèmes de fichiers
périphériques ou extérieurs (cd, disquette, nfs ..).
• /opt : lieu d'installation d'applications supplémentaires (comme
Anouar DARIF

starOffice, java ..)

28
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
• /root : répertoire personnel du super-utilisateur root
• /sbin: les commandes de base nécessaires a l'administration
Système d’exploitation I

système (vérification et réparation des disques, mise en place du


réseau...).
• /tmp : stockage des fichiers temporaires
• /usr : programmes accessibles à tout utilisateur; sa structure
reproduit celle de la racine /
 /usr/bin :les exécutables.
 /usr/dict :les dictionnaires (pour les correcteurs d'orthographe
et les craqueurs de mots de passe).
Anouar DARIF

 /usr/doc : la doc.
 /usr/etc :des fichiers de config. 29
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
 /usr/games :les jeux.
 /usr/include :les fichiers d'en-tête pour la programmation.
Système d’exploitation I

 /usr/info :la doc au format GNU info.


 /usr/lib :les DLL non vitales.
 /usr/local :une sous-hiérarchie qui contient des logiciels
compilés sur place à partir des sources. Organisation similaire
à /usr.
 /usr/man :le manuel en ligne. Les fichiers sont compressés.
 /usr/sbin :principalement les serveurs réseau.
Anouar DARIF

 /usr/share :des fichiers de données.

30
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
 /usr/spool :généralement un lien symbolique vers /var/spool.
 /usr/src :les sources de certains logiciels, principalement le
Système d’exploitation I

noyau de Linux.
• /var : données variables liées à la machine (fichiers d'impression,
traces de connexions http, smb …)
 /var/catman :les pages du manuel décompressées (ça se fait à la
demande).
 /var/lib :des bases de données, des fichiers de config...
 /var/local :complète /usr/local de la même façon
que /var complète /usr.)
Anouar DARIF

31
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Organisation des fichiers
 /var/lock :des fichiers qui servent à marquer l'utilisation de
certaines ressources. Par exemple, quand un logiciel se sert du
modem, il crée un fichier ici pour le signaler.
Système d’exploitation I

 /var/log :le journal du système.


 /var/run :principalement des infos sur les serveurs en
fonctionnement.
 /var/spool :les spools: tout ce qui est "de passage" en attendant
d'être utilisé par un logiciel. Ca inclut entre autres le mail, les
news, les files d'attente des imprimantes...
 /var/tmp :des fichiers temporaires.
Anouar DARIF

• /proc : ce pseudo-répertoire contient une "image" du système (


/proc/kcore est l'image de la RAM)
32
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Les répertoires « . » et « .. »
• le répertoire « . »= représente un lien vers le répertoire créé
• le répertoire « .. » = représente un lien vers le répertoire père.
Système d’exploitation I

Pour accéder à un fichier ou à un répertoire, on doit spécifier


• le chemin d’accès (pathname) qui décrit l’emplacement où se trouve le
fichier dans l'arborescence du système de fichier.
• Le pathname : est une suite de nom de répertoire séparés par « / »
(slach), décrivant l'emplacement où se trouve un fichier ou un
répertoire dans l'arborescence du système de fichier.
• Le chemin peut être absolu ou relatif:
 cd /home/tp1/cours
 cd cours ( sous-rep du rep courant )
Anouar DARIF

• Le caractère tilde (« ~ ») désigne le répertoire de connexion d’un


utilisateur (le home directory):
ls ~/cours : liste le sous-rep cours de l’utilisateur courant 33
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Déplacement dans le système de fichiers
• A la connexion, l'utilisateur est automatiquement positionné dans son
répertoire de connexion .
Exemple : /home/darif
Système d’exploitation I

• Pour se déplacer dans la hiérarchie: cd <nom_répertoire>


nom_répertoire peut être absolu ou relatif :
• absolu: préciser tout le chemin
• relatif: par rapport au répertoire courant
• cd /home/darif/smi (chemin absolu qui commence toujours par /)
• cd smi (chemin relatif)
• cd retour au répertoire de connexion
• cd .. monter d'un niveau dans la hiérarchie
Anouar DARIF

• cd ../.. monter de 2 niveaux dans la hiérarchie


• la caractère "." désigne le répertoire courant.
34
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Déplacement dans le système de fichiers
• ls commande générale d'accès aux infos des fichiers du répertoire
courant
• ls rep
Système d’exploitation I

• cd chemin le chemin peut être absolu (indiqué à partir de la racine) ou


relatif (à partir du rép. courant)
• ls -l liste avec les attributs des fichiers
• ls -a liste complète, y compris les fichiers cachés, qui commencent par
un point
• ls –la liste complète avec les attributs des fichiers
• ls -r liste "récursive" des contenus des sous-rép.
• ls --help pour tout savoir
Anouar DARIF

• file fichier renseigne sur la nature du contenu du fichier


• mkdir rep pour créer un sous_rep du rep courant
35
• rmdir rep pour supprimer un sous_rep vide
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Chemin absolu et chemin relatif
• Le chemin absolu commence par le symbole séparateur, il exprime le
chemin complet à partir de la racine de l'arborescence
• Le chemin relatif commence par un autre caractère que le caractère
Système d’exploitation I

séparateur. Il indique un chemin à partir du répertoire de travail


courant

• Exemple: Le répertoire courant est: /var/log


Anouar DARIF

 Le chemin absolu pour désigner le fichier fichier.txt est:


/home/etd/etudiant1/fichier.txt
36
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Chemin absolu et chemin relatif
 Le chemin relatif est:
../../home/etd/etudiant1/fichier.txt
Système d’exploitation I

• Exercice
Dans la hiérarchie précédente, exprimez les chemins suivants:
1. absolu pour prof1
2. Absolu pour etc
3. Absolu pour prof
4. Relatif à log pour acces.dat
5. Relatif à prof pour acces.dat
Anouar DARIF

6. Relatif à etudiant1 pour acces.dat

37
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Chemin absolu et chemin relatif
Système d’exploitation I

1. Absolu pour prof1: /home/prof/prof1


2. Absolu pou retc: /etc
3. Absolu pour prof : /home/prof
Anouar DARIF

4. Relatif à log pour acces.dat: acces.dat


5. Relatif à prof pour acces.dat: ../../var/log/acces.dat
6. Relatif à etudiant1 pour acces.dat: ../../../var/log/acces.dat 38
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 L’inode (noeud d'index)
• C’est une structure de données contenant des informations à propos
d'un fichier ou répertoire stocké dans certains systèmes de fichiers.
Elle est créée au même moment qu'un fichier.
Système d’exploitation I

• Elle a la forme suivante:


 le type (fichier ordinaire, spécial, rep,...),
 Le nombre de liens ,
 UID (User Identification): numéro d'utilisateur du propriétaire
 GID (Group Identification) : numéro du groupe propriétaire
 Taille du fichier en octets
 Adresses des blocs de données (qui contiennent le fichier)
 Droits du fichier Date de la dernière modification
Anouar DARIF

 date de création Date du dernier accès


 date de la dernière modification
39
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Tables d’inodes

• Chaque fichier est référencé dans deux tables :


 une table d'inode: une table qui regroupe tous les inodes fichier.
Système d’exploitation I

A chaque inode, correspond un numéro d’inode qui est son rang


dans la table des inodes.

 une table catalogue: elle décrit les correspondances entre les


noms de fichiers et les numéros d'inodes. La désignation d'un
fichier se fait par l'intermédiaire du répertoire dans lequel il est
stocké.
• N.B: Le système identifie un fichier par son numéro d’inode
Anouar DARIF

40
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Les liens

• Un lien permet de donner plusieurs noms à un même fichier, ou de


faire pointer un fichier sur un autre.
Système d’exploitation I

• Plutôt que de faire plusieurs copies d'un même fichier pour plusieurs
utilisateurs, on peut par exemple permettre à ceux-ci d'accéder à une
copie unique, mais depuis des endroits et des noms différents.

ln [options ] fichier1 fichier2

• Deux types de lien :


 les liens physiques « hard links »
 les liens symboliques « symbolic links »
Anouar DARIF

41
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Hard link (lien physique)
• Les liens physiques ne concernent que les fichiers; vous ne pouvez pas
créer de lien vers un fichier sur une partition différente avec un
numéro d’inode différent
• Si la copie real est supprimée, le lien fonctionnera , car il accède aux
Système d’exploitation I

données sous-jacentes auxquelles la copie réelle accédait.

• Question Comment créer un lien physique?


• Réponse: un lien physique peut être établi avec ln ; Vous devez d'abord
Anouar DARIF

définir la source, puis définir la destination. (Gardez à l'esprit que vous


devez définir le chemin complet de la source et de la destination, sinon
cela ne fonctionnera pas.)
42
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Hard link (lien physique)
Disons que nous avons un script dans le répertoire /script nommé firefox.
Système d’exploitation I

ls -i # Shows you the inode


5898242 firefox

ln /scripts/firefox /scripts/on-fire
( Source ) ( Destination )

Comme vous pouvez le voir, il a le même inode. Si vous supprimez


Anouar DARIF

l'original, le lien fonctionnera et il agira comme l'original.

43
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Symbolic link (lien symbolique)
• Un lien symbolique ne possède pas les limitations du lien physique.
Vous pouvez créer des liens vers des fichiers et des répertoires, et vous
pouvez créer des liens (raccourcis) sur différentes partitions et avec un
Système d’exploitation I

numéro d’inode différent de l’original.


• Crée un raccourci
• Si la copie real est supprimée, le lien ne fonctionnera pas.
Anouar DARIF

• Question Comment créer un lien symbolique?


• Réponse: un lien symbolique peut être créé avec ln -s; Vous devez
44
d'abord définir la source, puis définir la destination.
SMI_S3
 Système d'exploitation UNIX
 Le système de Fichiers
 Symbolic link (lien symbolique)

ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib32/libGL.so.1
(----------Source-------) ( Destination )
Système d’exploitation I

Comme vous pouvez le voir, il a un inode différent et peut être créé


sur une partition différente.
Anouar DARIF

45
SMI_S3
 Système d'exploitation UNIX
 Commandes Unix
 Unix offre à l’utilisateur un ensemble de commandes pour avoir
certaines informations ou pour manipuler des objets tels que
répertoires, fichiers, processus…etc
 Syntaxe générale des commandes:
Système d’exploitation I

commande [options] [arguments]


L’espace doit séparer les différents éléments de la commande.
Les options commencent habituellement par le caractère ‘-’ suivi
d’une ou plusieurs lettres-clés. Le comportement de la commande
est déterminé par les options utilisés.
Les arguments sont les objets sur lesquels la commande va
s’appliquer.
Anouar DARIF

 La commande est interprétée et exécutée après la frappe de la touche


“Entrée”.
46
SMI_S3
 Système d'exploitation UNIX
 Commandes Unix
Pour commencer
• La commande man (pour manuel) permet d'afficher une documentation
souvent très complète sur une commande particulière.
Système d’exploitation I

• Équivalent MS-DOS/MS Windows : help


• Elle est utile pour explorer les options possibles d’une commande.
Syntaxe: man commande
• Exemples: man man # obtenir de l’aide sur la commande man …
man ls # obtenir de l’aide sur la commande ls
man cat # obtenir de l’aide sur la commande cat
Anouar DARIF

La commande man est sans doute la commande la plus importante à


connaître

47
SMI_S3
 Système d'exploitation UNIX
 Commandes Unix
 Quelques commandes utiles
• date: affiche la date et l’heure
• cal: affiche le calendrier
Système d’exploitation I

• who: Qui est connecté?


• whoami: Qui suis je?
• tty: nom du terminal
• passwd: change le mot de pass
• Passwd -d login: supprime le mot de passe
• passwd -l login: désactive le compte
• passwd -u login: réactive le compte
• useradd : pour créer un utilisateur
Anouar DARIF

• groupadd : pour créer un groupe


48
SMI_S3
 Système d'exploitation UNIX
 Expressions régulières simple
• Elles sont utilisées par les shells pour faire des modèles de noms de
fichiers.
• Supportées par les commandes traitant plusieurs fichiers.
Système d’exploitation I

• Elle utilisent des métacaractères ? : un caractère quelconque.


 * : plusieurs caractères.
 [ ] : spécifie l’ensemble auquel appartient le caractère.
 [A-D] intervalle de A à D (A, B, C, D) par exemple bof[A-D] donne
bofA, bofB, bofC, bofD
 [2-5] intervalle de 2 à 5 (2, 3, 4, 5) par exemple 12[2-5]2 donne
1222, 1232, 1242, 1252
 [2-56] intervalle de 2 à 5 et 6 (et non pas 56) (2, 3, 4, 5, 6) par
Anouar DARIF

exemple 12[2-56]2 donne 1222, 1232, 1242, 1252, 1262

49
SMI_S3
 Système d'exploitation UNIX
 Expressions régulières simple
 [a-dA-D] intervalle de a à d et A à D (a, b, c, d, A, B, C, D) par
exemple z[a-dA-D]y
donne zay, zby, zcy, zdy, zAy, zBy, zCy, zDy
Système d’exploitation I

 [1-3-] intervalle de 1 à 3 et - (1, 2, 3, -) par exemple [1-3-]3 donne


13, 23, 33, -3
• Le métacaractère ^ identifie un début de ligne. Par exemple
l'expression régulière ^a va identifier les lignes commençant par le
caractère a
• Le métacaractère $ identifie une fin de ligne. Par exemple l'expression
régulière a$ va identifier les lignes se terminant par le caractère a.
 L'expression régulière ^chaine$ identifie les lignes qui contiennent
Anouar DARIF

strictement la chaîne chaine.


 L'expression régulière ^$ identifie une ligne vide.
50
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
• La règle de sécurité numéro un sous Unix est de ne jamais travailler
dans le compte root. En effet, ce compte dispose de tous les droits, et
la moindre erreur de la part de l'utilisateur dans ce compte peut
endommager l'ensemble du système d'exploitation.
Système d’exploitation I

• L'une des premières étapes dans l'installation d'un système est donc de
créer un compte utilisateur normal.
• Un utilisateur doit obligatoirement être un membre d’un groupe
d’utilisateurs, c’est son groupe principal qui est utilisé lors de la
création des fichiers. Par contre il peut appartenir à plusieurs groupes :
ses groupes secondaires déterminent ses droits d’accès aux fichiers
crées par d’autres utilisateurs.
• /etc/passwd : contient les informations relatives aux utilisateurs (login,
Anouar DARIF

mot de passe crypté, UID, GID, nom complet, répertoire de travail au


login, commande exécutée au login); et
• /etc/group : contient les informations relatives aux groupes (nom, mot
51
de passe, GID, liste des membres du groupe)
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Ajouter un Utilisateur
useradd [option] login
Options signification
Système d’exploitation I

-c Définir un commentaire dans le fichier /etc/passwd


-d Permet de fixer le répertoire personnel de l'utilisateur.
Permet de fixer la date d'expiration du compte. Cette date doit
-e
être spécifiée au format AAAA-MM-JJ.
Permet de définir le nombre de jours avant que le compte ne soit
-f désactivé une fois que le mot de passe est expiré. La valeur -1
permet de ne jamais désactiver le compte.
Permet de définir le groupe principal auquel l'utilisateur
-g
appartient. Il s'agit souvent du groupe users.
Permet de donner la liste des autres groupes auxquels
-G
l'utilisateur appartient. (separateur , )
Anouar DARIF

Permet de donner le mot de passe initial du compte.


-p
( commande passwd)
Permet de spécifier l'UID de l'utilisateur. Cette valeur doit être
-u 52
unique en général
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Ajouter un Utilisateur
Format du fichier /etc/passwd
Système d’exploitation I

username:passwd:UID:GID:full_name:directory:shell
 username: Le nom de l’utilisateur (login)
 passwd: Le mot de passe encodé
 UID: Identificateur de l’utilisateur: user ID
 GID: Identificateur du groupe: group ID
 full_name: Le nom complet de l’utilisateur (Prénom Nom) - Ce
champ est appelé le champ GECOS (General Electric Compréhensive
Operating System) et peut éventuellement contenir d’autres
informations
Anouar DARIF

 directory: Répertoire personnel de l’utilisateur


 hell: Shell par défaut de l’utilisateur
53
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Ajouter un Utilisateur
Format du fichier /etc/passwd
Système d’exploitation I

GID
login UID
Anouar DARIF

passwd Rep-perso

Commentaire
54
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Ajouter un Utilisateur
Format du fichier /etc/shadow
username:passwd:last:may:must:warn:expire:disable:reserved
Système d’exploitation I

 username: Le nom de l’utilisateur (login)


 passwd: Le mot de passe encodé
 last: Date de la dernière modification (en nombre de jours depuis le
1er janvier 1970).
 may: Nombre de jours avant que le mot de passe puisse être modifié
 must: Nombre de jours avant que le mot de passe doive être modifié
 warn: Nombre de jours durant lesquels l’utilisateur est prévenu de
l’expiration de son mot de passe.
 expire: Nombre de jours entre l’expiration du mot de passe et la
Anouar DARIF

fermeture du compte.
 disable: Date de la fermeture du compte (en nombre de jours depuis
le 1er janvier 1970).
 reserved: Champ réservé 55
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Ajouter un Utilisateur
Format du fichier /etc/shadow
Système d’exploitation I

1 2 3 4 5 6 7
1 , 2 : login et password
3 : Le nombre de jours (depuis le 1er Janvier 1970) jusqu’à le dernier
changement du mot de passe
4 : Le nombre de jours avant que le mot de passe ne puisse être
changé
(un 0 indique qu'il peut être changé à n'importe quel moment).
5 : Le nombre de jours après lesquels le mot de passe doit être changé
Anouar DARIF

6 : Le nombre de jours pour avertir l'utilisateur qu'un mot de passe ne va


plus être valable
7 : Le nombre de jours avant de désactiver le compte après expiration
56
du mot de passe
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Modifier un Utilisateur
 La commande usermod est utilisée pour modifier les informations
relatives à un utilisateur. Les options sont les mêmes que pour
Système d’exploitation I

useradd.
usermod [option] login
 Disons que l’on souhaite changer le shell de darif. Vous devrez faire
la chose suivante:
usermod -s /bin/tcsh darif

 Autre exemple
Anouar DARIF

57
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des utilisateurs
• Supprimer un Utilisateur
 Pour supprimer le compte d'un utilisateur il suffit de saisir "userdel"
suivie du nom de l'utilisateur. Cela supprimera l'utilisateur du fichier
Système d’exploitation I

"/etc/passwd" et "/etc/group".
userdel [options] login
 login est le nom de l'utilisateur
 L'option –r permet de demander à userdel d'effacer récursivement
le répertoire personnel de l'utilisateur, ce qu'elle ne fait pas par
défaut.
 Pour forcer la suppression de l'utilisateur utiliser l'option -f, marche
même quand l'utilisateur est encore connecté.
Anouar DARIF

 Exemple:
userdel -r -f toto

58
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des groupes
• Ajouter un groupe
 La commande groupadd crée un nouveau compte groupe en utilisant
les valeurs spécifiées sur la ligne de commande et les valeurs par
défaut du système
Système d’exploitation I

Groupadd [-g GID [-o]] nom_groupe


 -g GID: La valeur numérique de l'identifiant du groupe. Cette valeur
doit être unique, à moins que l'option -o ne soit utilisée. Cette valeur
ne doit pas être négative.

 /etc/group:
[root@client ~]# groupadd smi
[root@client ~]# cat /etc/group | grep smi
Anouar DARIF

smi:x:666:

Nom groupe Liste des utilisateurs


password GID 59
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des groupes
• Modifier un groupe
Groupmod [-g GID [-o]] nom_groupe
Système d’exploitation I

[root@client ~]# groupadd -g 555 smifp


[root@client ~]# cat /etc/group | grep smifp
smifp:x:555:
[root@client ~]# groupmod -g 567 smifp
[root@client ~]# cat /etc/group | grep smifp
smifp:x:567:

• Supprimer un Groupe
Groupdel nom_groupe
Anouar DARIF

groupdel : pour supprimer un groupe d'utilisateurs. Cette


commande supprime le groupe seulement, pas les utilisateurs
qui y appartiennent. 60
SMI_S3
 Système d'exploitation UNIX
 Gestion des comptes
 Gestion des groupes
• Ajouter un Utilisateur à un groupe
gpasswd –a <utilisateur> <group>
Système d’exploitation I

[root@client ~]# groupadd -g 555 smibm


[root@client ~]# cat /etc/group | grep smibm
smibm:x:555:
[root@client ~]# gpasswd -a darif smibm
[root@client ~]# cat /etc/group | grep smibm
smibm:x:555:darif

• Enlever un Utilisateur d’un groupe


gpasswd –d <utilisateur> <group>
Anouar DARIF

[root@client ~]# gpasswd -d darif smibm


[root@client ~]# cat /etc/group | grep smibm
smibm:x:555:
61
SMI_S3
 Système d'exploitation UNIX
 Gestion des répertoires
• A la connexion, l'utilisateur est automatiquement positionné dans son
répertoire de connexion.

• pwd (print working directory) : affiche le répertoire courant


Système d’exploitation I

• ls (list) : affiche le contenu d’un répertoire

 ls sans paramètre: liste le répertoire de travail

 ls répertoire : liste le contenu du répertoire donné

 ls -a : liste de tous les fichiers

 ls -l : affiche toutes les informations sur les fichiers

 ls -al : concaténation des 2 options (a et l)


Anouar DARIF

 ls -t : liste des fichiers du plus récent ou plus ancien


62
 ls –i : liste des fichiers avec le numéro d’inode
SMI_S3
 Système d'exploitation UNIX
 Gestion des répertoires
• cd (change directory) : se déplacer dans la hiérarchie
 cd sans aucun paramètre vous repositionne sur votre répertoire
personnel
Système d’exploitation I

 Répertoires spéciaux : ‘. ‘ répertoire courant et ‘..’ répertoire


parent
• mkdir (make directory): créer un répertoire
mkdir nom-répertoire
• rmdir (remove directory): supprimer un répertoire qui doit être vide
rmdir nom-répertoire
• rm –r nom-répertoire : supprimer un répertoire non vide
Anouar DARIF

• mv (move ): renommer ou déplacer un répertoire


mv répertoire1 répertoire2
63
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
• file nom-fichier: afficher le type du fichier
• more [nom-fichier]: afficher un fichier page par page. Si aucun fichier
n’est spécifié, lit sur l’entrée standard.
Système d’exploitation I

• less [nom-fichier]: afficher un fichier en permettant le déplacement


dans le fichier.
• cat [nom-fichier1… ]: afficher les fichiers un après l’autre (
concaténation) . Si aucun argument n’est spécifié, lit sur l’entrée
standard (jusqu’à rencontrer un caractère fin de fichier CTRL-d)
• head [nom-fichier ] : afficher le début d’un fichier. Si aucun fichier
n’est spécifié, lit sur l’entrée standard.
 -n spécifie le nombre de lignes à afficher
Anouar DARIF

• tail [nom-fichier ] : afficher la fin d’un fichier. Si aucun fichier n’est


spécifié, lit sur l’entrée standard.
 -n spécifie le nombre de lignes à afficher 64
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
• touch nom-fichier : créer le fichier s’il n’existe pas, s’il existe mettre à
jour la date de la dernière modification.
• diff fichier1 fichier2 : Compare ligne à ligne des deux fichiers texte
Système d’exploitation I

fichier1 et fichier2
• wc [nom-fichier ...] : afficher le nombre de caractères, mots et lignes
dans le(s) fichier(s)
 -c affiche le nombre de caractères
 -w affiche le nombre de mots
 -l affiche le nombre de lignes
• sort [nom-fichier ...] : trier par ordre alphabétique les lignes du ou des
Anouar DARIF

fichiers en arguments.
• lpr nom-fichier : imprimer le fichier.
65
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
• cp fichier dest : copier un fichier
 Si dest est un répertoire, cp copie le fichier dans dest.
 Si dest est un fichier, cp créer une copie du fichier sous le nom
dest.
Système d’exploitation I

 cp peut être aussi utilisée pour les répertoires.


• cp [option] ens-fichiers-source répertoire: copie l'ensemble des
fichiers dans le rép. spécifié, en gardant les noms
• Principales options :
 -r, recopie récursive, permet de copier toute une arborescence
 -i avertit l'utilisateur de l'existence d'un fichier du même nom et
lui demande s'il veut le remplacer.
Anouar DARIF

 -p effectue une copie en gardant le propriétaire et le groupe


d'origine.
 -v affiche en clair le nom des fichiers copiés. 66
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
• rm nom-fichier ..: supprimer le ou les fichiers spécifiés.
 -i :demande confirmation
 -r suppression récursive utilisée pour les répertoires même pleins.
Système d’exploitation I

 -f (force) permet de supprimer les fichiers protégés en écriture


sans demande de confirmation.
• Exemples:
 rm -r /home/toto/tmp, demande à l'utilisateur la permission de
supprimer les fichiers un par un, et ne supprime pas le rep. s'il
n'est pas vide.
 rm -rf /home/toto/tmp, détruit sans préavis l'arborescence (si
on en a le droit !)
Anouar DARIF

67
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
• mv fichier dest : renommer ou déplacer un fichier
• mv [option] fichiers répertoire: déplace les fichiers sources dans le
répertoire, en gardant les noms.
Système d’exploitation I

 exemple : mv /home/jean/images/*.jpg /tmp/


• Principales options :
 -b (b=backup) effectue une sauvegarde des fichiers avant de les
déplacer. La copie porte le même nom suivi d'un tilde.
 -i (i=interactive) demande confirmation avant pour chaque
fichier.
 -u (u=update) pour ne pas supprimer le fichier si sa date de
Anouar DARIF

modification est postérieure à celle du fichier remplaçant

68
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 Editeur de fichiers : vi
• C’est un éditeur de texte plein écran
• Présent sur tous les systèmes Unix
Système d’exploitation I

• Assez puissant mais malcommode


• vi fonctionne en 2 modes :
 Mode commande : les caractères tapées sont interprétées en tant
que commande.
 Mode insertion : les caractères tapées sont insérées dans le texte
édité. On peut passer à ce mode en tapant les caractères ‘i’ ou ‘I’
ou ‘A’, on le quitte en tapant « Esc ».
Anouar DARIF

69
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 Exercices
1. Dans votre répertoire courant , créez en une seule commande les
fichiers suivants : annee1 Annee2 annee4 annee45 annee41
annee510 annee_a
Système d’exploitation I

2. Créer le répertoire Year dans votre répertoire courant, en une


commande déplacez les fichiers précédemment créés dans le
répertoire Year.
3. Lister les fichiers
a. Se terminant par 5
b. Commençant par annee4
c. Commençant par annee4 et contenant 7 lettres maximum
d. Commençant par annee avec aucun chiffre numérique
e. Contenant la chaine ana
Anouar DARIF

f. Commençant par a ou A
4. Créer un nouveau répertoire, et y copier les fichiers dont l’avant
dernier caractère est 4 ou 1.
70
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 Correction
1. touch annee1 Annee2 annee4 annee45 annee41 annee510
annee_a
2. mkdir Year
Système d’exploitation I

mv [aA]* Year
1. ;
a. ls *5
b. ls annee4*
c. ls annee4?
d. ls annee[^0-9]*
Anouar DARIF

e. ls *ana*
f. ls [aA]*
2. cp *[41]? nomrep. 71
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 Archiver et compresser
 La compression d'un fichier se fait de manière suivante :
gzip fichier
Système d’exploitation I

 gzip renomme le fichier compressé en « fichier.gz ».


 Pour conserver la version non compressé
gzip -c fichier > fichier.gz
 La décompression d'un fichier se fait à l'aide de la commande
suivante : gunzip fichier.gz
 Pour conserver la version compressé:
gunzip -c fichier.gz
Anouar DARIF

 gzip -r dossier/: Cette commande compresse tous les fichiers à


l’intérieur du dossier passé en paramètre et non le dossier lui même,
72
il faut archiver le dossier avant de le compresser
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 Archiver et compresser
 Tar : permet d'assembler des fichiers dans un seul fichier avant de les
compresser.
 Réunir les fichiers dans un seul gros fichier appelé archive. On utilise
Système d’exploitation I

pour cela le programme tar.


 Compresser le gros fichier ainsi obtenu à l'aide de gzip.
 La syntaxe de tar est très simple :
tar [options] archive fichiers
 Les options de tar que vous utiliserez le plus souvent sont les
suivantes :
 cvf pour créer une archive ;
 tvf pour lister le contenu d'une archive;
 xvf pour restaurer le contenu d'une archive.
Anouar DARIF

 Pour archiver le contenu du répertoire courant dans le fichier


archive.tar : tar -cvf archive.tar *
 Pour lister le contenu d'une archive: tar -tvf archive.tar 73
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 split: Coupe un fichier en morceau
 La commande split permet de couper un fichier en morceau (en
plusieurs fichiers):
split -10 mon_fichier fichier
Système d’exploitation I

 Vous allez créer les fichiers fichieraa, fichierab, fichierac, ... qui
contiendront tous 10 lignes.
 Le premier fichieraa contient les 10 premières lignes, ainsi de suite
 Supposons qu’on a un fichier nommé ff1 de 15 lignes et qu’on va le
couper en fichiers de 5 lignes:
[root@client ~]# ls ff*
ff1
[root@client ~]# split -5 ff1 ff2
[root@client ~]# ls ff*
Anouar DARIF

ff1
ff2aa
ff2ab
ff2ac 74
SMI_S3
 Système d'exploitation UNIX
 Gestion des fichiers
 cmp: Compare deux fichiers
 La commande cmp indique si deux fichiers sont identiques.
cmp fichier1 fichier2
 Si les deux sont identiques, la commande ne génère aucune sortie,
Système d’exploitation I

s'ils sont différents la commande indique la position de la première


différence (ligne et caractère).

 La commande uniq
 uniq affiche les lignes uniques d'un fichier trié, ne conservant qu'un
seul exemplaire de celles dupliquées.
 -u, unique : N'afficher que les lignes uniques.
 -d, repeated : N'afficher que les lignes dupliquées.
Anouar DARIF

 -c, count : Afficher également le nombre d'occurrences de chaque


ligne.
75
SMI_S3
 Système d'exploitation UNIX
 Les Droit d’accès
• Linux a repris les 3 protections d'UNIX sur les fichiers et les répertoires.
Leur notation symbolique est :
 r (read) droit de lecture
Système d’exploitation I

 w (write) droit d’écriture


 x droit d’exécution (ou de traverser un répertoire)
• Tout fichier du système appartient à la fois à un utilisateur (son
"propriétaire") et à un groupe.
• Pour chaque fichier le monde de ses utilisateurs potentiels est scindé
en 3 catégories (classes d’utilisateurs), nommées :
 u, son propriétaire
Anouar DARIF

 g, son groupe
 o, tous les (others) autres.
• La présence d'un tiret "-" signifie l'absence complète de droits 76
SMI_S3
 Système d'exploitation UNIX
 Les Droit d’accès
 Changements des droits
• Chown: Changer le propriétaire et le groupe d'un fichier ou dossier en
ligne de commande
chown [-option] [utilisateur][:groupe] [cible1 cible2 ..]
Système d’exploitation I

• Changer de propriétaire
 Par défaut lorsqu'un utilisateur crée un fichier ou un dossier, il en
devient propriétaire et fait partie du groupe portant le même
nom.
 Par exemple ce fichier appartient a l'utilisateur darif et fait partie
du groupe darif, pour voir les paramètres du fichier on va taper:
root@darif-virtualBox: /home/darif/smi # ls –l test.txt
-rw-r--r-- 1 darif darif 0 oct. 10 23:35 test.txt
Anouar DARIF

 Le darif de gauche représente le nom du propriétaire et


le darif de droite représente le nom du groupe
77
SMI_S3
 Système d'exploitation UNIX
 Les Droit d’accès
 La commande chown, qui doit être utilisée avec les droits root,
dispose de cette syntaxe :
chown propriétaire nom_fichier_ou dossier
 Par exemple on va changer le propriétaire « darif" par "toto":
Système d’exploitation I

chown toto test.txt


 On peut voir ensuite que "toto" est bien le nouveau propriétaire
du fichier :
root@darif-virtualBox: /home/darif/smi # ls –l test.txt
-rw-r--r-- 1 toto darif 0 oct. 10 23:35 test.txt

• Changer de groupe
 Comme vous avez du le remarquez, le fichier appartient toujours
au groupe darif.
Anouar DARIF

 Vous pouvez aussi changer le groupe propriétaire du fichier avec


chown.
 On va par exemple mettre le fichier dans le groupe "travail" 78
SMI_S3
 Système d'exploitation UNIX
 Les Droit d’accès
chown toto:travail test.txt
 Par exemple on va changer le propriétaire "darif" pour " toto":
 Comme vous pouvez le voir il suffit de séparer par le Symbole
deux-points ":"
Système d’exploitation I

 Le nom de utilisateur à gauche et le nom du nouveau groupe à


droite
 On vérifie:
root@darif-virtualBox: /home/darif/smi # ls –l test.txt
-rw-r--r-- 1 toto travail 0 oct. 10 23:35 test.txt

• Option "-R" pour affecter récursivement les sous-dossiers


 L'option -R (uniquement le "R" majuscule) de chown permet
Anouar DARIF

d'affecter un nouveau propriétaire et/ou un nouveau groupe à tous


les sous-dossiers et fichiers contenus dans un répertoire.

79
SMI_S3
 Système d'exploitation UNIX
 Les Droit d’accès
 Par exemple le répertoire smi contient un dossier et trois fichiers:
root@darif-virtualBox: /home/darif/smi # ls –l
-rw-r--r-- 1 darif darif 67 oct. 10 23:37 fich1.txt
-rw-r--r-- 1 darif darif 137 oct. 10 23:37 fich2.txt
Système d’exploitation I

drwxr-xr-x 2 darif darif 4096 oct. 10 23:39 document


-rw-r--r-- 1 toto travail 0 oct. 10 23:35 test.txt

 On va affecter l'utilisatrice "toto" comme propriétaire et on va


mettre le groupe "travail":
chown –R toto:travail /home/darif/smi
 On vérifie:
root@darif-virtualBox: /home/darif/smi # ls –l
-rw-r--r-- 1 toto travail 67 oct. 10 23:37 fs.mp3
-rw-r--r-- 1 toto travail 137 oct. 10 23:37 abc.jpg
Anouar DARIF

drwxr-xr-x 2 toto travail 4096 oct. 10 23:39 document


-rw-r--r-- 1 toto travail 0 oct. 10 23:35 test.txt

80
SMI_S3
 Système d'exploitation UNIX
 Changer les permissions sur les fichiers
• La commande chmod (change mode, change le "mode" des fichiers)
peut s'écrire de plusieurs façons équivalentes, sur le modèle :
chmod [-R] <action-droits> nom_rep
 L'option -R (récursif) permet de modifier les permissions de tous
Système d’exploitation I

les sous répertoires.


 Le paramètre droits permet de calculer les nouveaux droits
d'accès.
• Ajout, retrait ou fixation des permissions
Pour chaque fichier, on désigne par :
 u, g et o les 3 catégories d'utilisateurs (user, group, other) et de
plus par a (=all) tous les utilisateurs.
Anouar DARIF

 + - = l'action d'ajouter, de retirer ou de fixer un droit, qui


s'applique à chaque catégorie séparément.
81
SMI_S3
 Système d'exploitation UNIX
 Changer les permissions sur les fichiers
 les changements, sur le modèle "à quelle(s) catégorie(s), quelle
action, quel(s) droit(s)" sont alors notés symboliquement :
[u g o a] [+ - =] [r w x]
Système d’exploitation I

Exemples
 chmod u+x fichier : "ajoute le droit d'exécution au propriétaire du
fichier"
 chmod go-rwx fichier : "enlève tous droits d'accès à tous les
utilisateurs, sauf au propriétaire"
 chmod –R go-rwx /home/toto: enlève toutes les permissions
d'accès des fichiers du répertoire personnel de toto (et des sous-
répertoires.), à tous sauf au propriétaire, c'est-à-dire toto.
Anouar DARIF

 chmod a+x,g-w+r fichier


 chmod a=rw fichie
82
SMI_S3
 Système d'exploitation UNIX
 Notations absolue et octale
 Absolue
• chmod u=rwx,g=rw,o=r fichiers remplace les permissions précédentes
des fichiers, en les fixant à -rwxrw-r–
Système d’exploitation I

• chmod u=rwx,g=r fichiers fixe les permissions à -rwxr--??? en ne


changeant pas les permissions précédentes du groupe other
• chmod u=rwx,g=r,o= fichiers fixe les permissions à -rwxr-----
 Octale
chmod [-R] octalmode fichier...
• Octalmode: représentation octale des droits.
• chaque élément est représenté par 0 ou 1
Anouar DARIF

83
SMI_S3
 Système d'exploitation UNIX
 Notations absolue et octale

• Exemples:
 777 : tous les droits à tous
 770 : tous les droits à user et group et aucun droit aux autres
Système d’exploitation I

 707 : tous les droits à user et autres et aucun droit au group


 644: droits de lecture et écriture pour user et lecture
seulement pour group et les autres.
 466: droits de lecture et écriture pour group et les autres et
lecture seulement pour user.
 chmod 764 test ; chmod u=rwx,g=rw,o=r test
 chmod 467 fich1 ; chmod u=r,g=rw,o=rwx fich1
Anouar DARIF

 chmod 555 fich2 ; chmod u=rx,g=rx,o=rx fich2

84
SMI_S3
 Système d'exploitation UNIX
 Notations absolue et octale
• Exercice:
1.Interdire la lecture et l'accès au répertoire RepertoireUn aux
utilisateurs ne faisant pas partie du groupe staff
Système d’exploitation I

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

3.Donner le droit d'exécution sur le fichier fichierUn à l'utilisateur


propriétaire

4.Prévoir les droits affichés par la commande ls –l après exécution de


ces commandes

5. Réécrire les commandes avec l'utilisation numérique de la


commande chmod
Anouar DARIF

85
SMI_S3
 Système d'exploitation UNIX
 Notations absolue et octale

• Correction:
 Mode symbolique
Système d’exploitation I

1. chmod o-rx RepertoireUn


2.Chmod g+w fichierUn
3.Chmod u+x fichierUn
 Mode symbolique
1. chmod 750 RepertoireUn
2.Chmod 664 fichierUn
3.Chmod 764 fichierUn
Anouar DARIF

86
SMI_S3
 Système d'exploitation UNIX
 Le masque de protection umask
• La commande umask permet de définir les droits par défaut d'un
fichier ou répertoire à sa création. Elle indique les droits qu'il faut
retirer lors de leur création.
• umask affiche le masque de l'utilisateur actif
Système d’exploitation I

• umask -S affiche les permissions correspondantes au masque, sous


forme symbolique.
• umask masque fixe les permissions ultérieures de création des fichiers
de l'utilisateur actif, conformément à masque, en notation octale
• Un fichier est créé avec les droits par défaut 666 (rw-rw-rw-) filtré par
le masque 022 :
 666 = 110 110 110 permissions maxi = rw- rw- rw-
Anouar DARIF

 022 = 000 010 010 masque de protection


 =644 = 110 100 100 permissions effectives = rw- r– r--
87
SMI_S3
 Système d'exploitation UNIX
 Le masque de protection umask
• Un répertoire est créé avec les droits par défaut 777 (rwxrwxrwx) filtré
par le masque 022
• Attention ! le changement ne s'applique qu'à la présente session.
Système d’exploitation I

• Pour la rendre permanente, on peut intervenir sur un fichier profile :


• Dans le fichier profil général /etc/profile, on peut modifier la règle
habituelle : if [ $UID == 0 ] ; then umask 022 ; else umask 077 ; fi
• Pour agir au niveau des utilisateurs, ajouter la ligne umask masque
dans le fichier de profil personnel $HOME/.bash_profile
• Exemple :
 umask 026 ( 666-026=640)
 Nouveau fichier  -rw-r-- ---
Anouar DARIF

 Nouveau répertoire  drwxr-x--x


88
SMI_S3
 Système d'exploitation UNIX
 Le masque de protection umask
• Exercice: Donnez la commande umask, de manière à ce que les
fichiers lors de leur création aient par défaut les droits 640 (rw-r-----),
et les répertoires 750 (rwxr-x---)
• Correction
Système d’exploitation I

 masque maximum pour un fichier 666 rw-rw-rw-


 à retirer 026 ----w-rw-
 droit par défaut 640 rw-r-----

 masque maximum pour un répertoire 777 rxrwxrwx


 à retirer 027 ----w-rwx
 droit par défaut 750 rwxr-x---
Anouar DARIF

Soit la commande: umask 027


(Pour un fichier retirer 026 ou 027 est équivalent) 89
SMI_S3
 Système d'exploitation UNIX
 Le masque de protection umask
• Exercice: Dans votre répertoire courant, créez un répertoire
essai_droit, par défaut ce répertoire est à 755 (rwxr-xrx), quelles sont
les commandes (en symbolique et en octal) pour lui donner les droits
suivant :
Système d’exploitation I
Anouar DARIF

90
SMI_S3
 Système d'exploitation UNIX
 Les droits étendus
 Le droit SUID
 Il s'agit d'un dispositif de sécurité essentiel qui autorise un
utilisateur quelconque (par rapport à la commande) à bénéficier de
droits plus étendus que les siens (souvent ceux de root).
Système d’exploitation I

 Quand le SUID est activé sur un exécutable, l’utilisateur qui exécute


le fichier dispose des mêmes droits que le propriétaire
 Ce droit est noté symboliquement s et se positionne à la place du x
du propriétaire u (mais sans écraser le droit x)
 La lettre S remplace s , si ce droit x n'est pas accordé
 Sa valeur octale est 4000
 Exemple
$ ls -l $(which passwd)
-rwsr-xr-x. 1 root root 27832 22 jun 2019 /usr/bin/passwd
Anouar DARIF

Cet Exemple nous indique que cet exécutable à le SUID activé qui
autorise un utilisateur d’écrire son mot de passe dans un fichier
91
réservé à root (/etc/shadow).
SMI_S3
 Système d'exploitation UNIX
 Les droits étendus
 Le droit SUID
 Opérations SUID
• Créer un dossier et tenter de changer son propriétaire. La
commande chown ne peut être utilisée que par root.
Système d’exploitation I

$ mkdir tmp
$ ls -ld tmp
drwxrwxr-x. 2 darif darif 6 4 jun 23:10 tmp
$ chown root tmp
chown: modification du propriétaire de «tmp»: Opération non permise
$ ls -l $(which chown)
-rwxr-xr-x. 1 root root 62792 10 jun 2019 /usr/bin/chown

• Activer le SUID sur la commande.


$ sudo chmod +4000 $(which chown)
Anouar DARIF

$ ls -l $(which chown)
-rwsr-xr-x. 1 root root 62792 10 jun 2019 /usr/bin/chown

92
SMI_S3
 Système d'exploitation UNIX
 Les droits étendus
 Le droit SUID
 Opérations SUID
$ chown root tmp
$ ls -ld tmp
drwxrwxr-x. 2 root darif 6 4 jun 23:10 tmp
Système d’exploitation I

 Désactivation du SUID
$ sudo chmod u-s $(which chown)

Le droit SGID


 Valeur octale : 2000, valeur symbolique : s
 Le SGID permet d’endosser les droits du groupe propriétaire.
 Quand un utilisateur crée un fichier dans un dossier dont il
est membre du groupe, le fichier prendra les permissions du groupe
courant.
 Quand le SGID est fixé sur un dossier, le fichier créé par l’utilisateur
Anouar DARIF

prendra les droits du groupe du dossier. En conséquence, tous les


fichiers créés quel que soit l’utilisateur appartiendront au groupe du
dossier. 93
SMI_S3
 Système d'exploitation UNIX
 Les droits étendus
 Le "sticky bit"
 Le Sticky bit est un droit spécial dont le comportement est
différent pour les fichiers exécutables et les répertoires. Il
correspond à la lettre t ou numériquement à 1000. Si les droits
Système d’exploitation I

d'exécution ne sont pas positionnés c'est la lettre T qui


correspond.
• les fichiers exécutables: le programme restera en mémoire pour
une exécution ultérieure
• les répertoires: si le sticky bit est positionné sur un répertoire,
seul le propriétaire pourra supprimer ses fichiers (c'est le cas
des répertoires /tmp et /var/tmp sous GNU/Linux)

$ ls -l
Anouar DARIF

drwxrwxrwt. 11 root root 340 17 jan 11:59 tmp

94
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
• Lorsqu’un programme est lancé depuis la ligne de commande du
shell, il reçoit les mêmes entrées-sorties que le shell. Celles-ci sont en
principe liées au clavier et à l’écran du terminal comme l’illustre la
figure.
Système d’exploitation I
Anouar DARIF

95
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
• Avant de lancer un processus, le shell lui associe 3 flux de données ( ou
fichiers):
• Entrée standard (par défaut clavier); descripteur 0
• Sortie Standard (par défaut écran); descripteur 1
• Sortie Standard des erreurs (par défaut écran); descripteur 2
Système d’exploitation I

• Rediriger la sortie standard vers un fichier


Anouar DARIF

ma-commande > mon-fichier


• Si mon-fichier n’existe pas, cette redirection le crée. Sinon, son contenu
est écrasé. 96
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
• Lors de la redirection de la sortie standard à l’aide de
l’opérateur > vers un fichier déjà existant, les nouvelles données
remplacent les données qu’il contient. Pour ajouter les nouvelles
données à la suite des données existantes, on peut utiliser
Système d’exploitation I

l’opérateur >>: ma-commande >> mon-fichier


Anouar DARIF

97
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
 Exemples:
• ls -l > smi : Le résultat de ls -l ne s'affiche pas à l'écran, mais il est placé
dans le fichier smi. On peut alors taper: less smi (ou more smi) pour
lire le fichier page par page.
Système d’exploitation I

• ls -l >> smi : le fichier smi contiendra à la suite tout ce que vous a


renvoyé la commande
• find /home –name tp > fichier_sortie 2 >fichier_erreur: le résultat
sera dirigé vers fichier_sortie et les messages d’erreur vers
fichier_erreur
• ls abdnkjf > sortie.txt 2>&1: La sortie de ls est enregistrée dans le
fichier sortie.txt. L'erreur standard est redirigée à la sortie standard.
Donc, l'erreur standard est également redirigée au fichier sortie.txt;
.
echo "1" > file echo "1" > file
Anouar DARIF

echo "2" > file echo "2" >> file


cat file cat file
2 1
2 98
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
• Si on redirige maintenant l’entrée standard avec l’opérateur de
redirection <, les données que reçoit le programme ne proviennent
plus du clavier, mais d’un fichier comme le montre l’illustration de la
figure suivante
Système d’exploitation I
Anouar DARIF

99
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
• Utiliser un fichier comme entrée standard:
ma-commande < mon-fichier
• Envoyer à la commande toutes les lignes tapées en entrée, jusqu'à la
Système d’exploitation I

chaîne chaînedefin
ma-commande << chaînedefin
• Redirection des erreurs ( sous sh ou bash):
ma-commande 2> mon-fichier-erreur
• Redirection de la sortie standard et la sortie des erreurs vers un
fichier :
ma-commande > mon-fichier 2>&1
Anouar DARIF

100
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
 Redirection de la sortie d’erreur
• Lorsqu’une erreur survient, l’usage veut que le programme informe
l’utilisateur en écrivant un message dans la sortie d’erreur standard.
En principe, les caractères envoyés vers cette sortie sont envoyés vers
Système d’exploitation I

le terminal, mais il possible de les rediriger vers un fichier. Pour cela,


on utilise l’opérateur 2>
Anouar DARIF

101
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
 Les tubes de communications (pipe)
• ls -l > smi : Le résultat de ls -l ne s'affiche pas à l'écran, mais il est placé
dans le fichier smi. On peut alors taper: less smi (ou more smi) pour
lire le fichier page par page.
Système d’exploitation I

• Le symbole |, appelé encore ”tube” ou ”pipe”, est utilisé pour relier 2


commandes entre elles. La sortie standard de la commande à gauche
du symbole sera utilisée comme entrée standard de la commande de
droite:
commande1 | commande2
• Ceci est équivalent à faire :
commande1 > fichier
commande2 < fichier
Anouar DARIF

• Exemple: ls -l | sort –r (affiche le contenu du répertoire courant trié à


l'envers)
102
SMI_S3
 Système d'exploitation UNIX
 Redirections des entrées-sorties
 Les tubes de communications (pipe)
• ls | sort : Le symbole | (tube ou pipe) indique que l’on souhaite
rediriger la sortie standard de la commande ls vers l’entrée standard de
la commande sort comme l’illustre la figure suivante
Système d’exploitation I
Anouar DARIF

103
SMI_S3
 Système d'exploitation UNIX
 Commandes UNIX
 La Commande find
• find cherche dans un répertoire ou hiérarchie de répertoires des
fichiers possédant certains critères
find [option] path expression commande
Système d’exploitation I

• option:
 -name : recherche par nom de fichier
 -type : Recherche par type de fichier
 -user : recherche par nom d’utilisateur
 -group : Recherche par appartenance à un groupe
 -atime : Recherche par date de dernier accès
 -mtime : Recherche par date de dernière modification
 -ctime : Recherche par date de création
 -size: recherche par la taille
Anouar DARIF

 -a, -o , ! : and , or, not


• commande:
-print affiche le nom du fichier 104
SMI_S3
 Système d'exploitation UNIX
 Commandes UNIX
 La Commande find
• Exemples
Pour chercher un fichier dont le nom contient la chaîne de
caractères toto à partir du répertoire /usr:
Système d’exploitation I

find /usr -name toto –print

Pour chercher un fichier dont le nom contient la chaîne de


caractères toto à partir du répertoire /:
find / -name toto –print

Pour connaître les derniers fichiers modifiés dans les 3 derniers jours
dans toute l'arborescence (/):
find / -mtime 3 –print
Anouar DARIF

Pour chercher dans toute l'arborescence, les fichiers ordinaires


appartenant à darif, dont la permission est fixée à 755:
105
find / -type f -user darif -perm 755 –print
SMI_S3
 Système d'exploitation UNIX
 Commandes UNIX
 La Commande find
• Les commandes en option
L'option -print est une commande que l'on passe à find pour afficher
les résultats à la sortie standard. En dehors de print, on dispose de
Système d’exploitation I

l'option -exec. find couplé avec exec permet d'exécuter une commande
sur les fichiers trouvés d'après les critères de recherche fixés. Cette
option attend comme argument une commande, celle ci doit être suivi
de {}\
• commande:
-print affiche le nom du fichier
-exec unix-cmd (avec {}=nom du fichier
Exemples: recherche des fichiers ayant pour nom core, suivi de
l'effacement de ces fichiers.
Anouar DARIF

find . -name core -exec rm {}\


Tous les fichiers ayant pour nom core seront détruits, pour avoir une
demande de confirmation avant l'exécution de rm:
106
find . -name core -ok rm {}\
SMI_S3
 Système d'exploitation UNIX
 Commandes UNIX
 La Commande find: Exercice
1. Chercher dans toute l'arborescence les fichiers avec les critères
suivants :
a. le nom se termine par .c
Système d’exploitation I

b. Le nom commence par X ou x


c. Le nom ne contient pas de chiffre

2. Chercher dans /usr les fichiers dont la taille dépasse 2000 bytes et
dont les droits sont fixés à 755 (-rwxr-xr-x).

3. Combien il y a de fichiers dans toute l'arborescence vous


appartenant et ayant les droits fixés à 666 (-rw-rw-rw-).
Anouar DARIF

4. Trouver tous les fichiers core dans l'arborescence et supprimez les


après confirmation

107
SMI_S3
 Système d'exploitation UNIX
 Commandes UNIX

 La Commande find: Correction


1. Fichiers recherchés:
a. find / -name "*.c" 2> Error
Système d’exploitation I

b. find / -name "[Xx]*" 2> Erro


c. find / ! -name "*[0-9]*" 2> Error

2. find /usr -size +2000 -a -perm 755

3. find / -user votrenom -a -perm 666 -print | wc –l

4. find / -name "core" -print -ok rm {} \;


Anouar DARIF

108
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 Un filtre est une commande qui lit les données sur l'entrée standard,
effectue des traitements sur les lignes reçues et écrit le résultat sur la
sortie standard.
 Bien sûr les entrées/sorties peuvent être redirigées, et enchainées avec
Système d’exploitation I

des tubes.
 A noter que le caractère d'indirection < en entrée n'est pas obligatoire
pour les filtres. les principaux filtres utilisés dans le monde UNIX:
• grep
• cat, more et less
• cut
• wc
• tr
• sed
Anouar DARIF

• Awk
• …

109
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La Commande grep

grep [option] expr fichier1…fichiern


Affiche chaque ligne des fichiers fichieri contenant l’expression
Système d’exploitation I

régulière expr. Les options sont les suivantes :


• -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
• -w lignes où le mot apparaît tel quel
• -E : Recherche en utilisant une expression rationnelle étendue ; on
peut utiliser la commande egrep
Anouar DARIF

• -l affiche le nom des fichiers qui contiennent la chaîne


• -i : Insensible à la casse
110
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 Expressions régulières étendues
On a vu auparavant ce qu'étaient les métacaractères. Les expressions
régulières sont aussi des suites de caractères permettant de faire des
sélections. Elles fonctionnent avec certaines commandes comme grep.
Système d’exploitation I

Les différentes expressions régulières sont :


• ^ début de ligne
• . un caractère quelconque
• $ fin de ligne
• x* zéro ou plus d'occurrences du caractère x
• x+ une ou plus occurrences du caractère x
• x? une occurrence unique du caractère x
• [...] plage de caractères permis
Anouar DARIF

• [^...] plage de caractères interdits


• \ {n\} pour définir le nombre de répétition n du caractère placé
111
devant
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 Exemples
• grep "^.o" fichier : cherche dans fichier, les lignes dont la 1ère lettre est
qcq et la 2ème doit être o
• grep "^t" /etc/passwd : cherche dans le fichier passwd les lignes
commençant par t
Système d’exploitation I

• grep -E ‘ing$’ : retrouver les lignes finissant en ‘‘ing’’


• grep –v gh : ignorer les lignes contenant ‘‘gh’’
• grep –v -E 'ing$’ : ignorer les lignes finissant en ‘‘ing’’
• grep -E ’^[A–Z]’ : les lignes commençant avec une majuscule
• grep -E ’^[A–Z]*$’ : les lignes comportant uniquement des Majuscules
• grep -E ’[aeiouAEIOU]’ ou grep –i -E ’[aeiou]’ : les lignes comportant
une voyelle
• grep –i -E ’^[^aeiou]’ : les lignes commençant avec une non-voyelle
• grep -c "a$" : compter les lignes saisies au clavier qui se termine par a
Anouar DARIF

• grep [abc] "essai?.txt" : afficher les lignes des fichiers essai?.txt qui
contiennent a, b ou c
• grep -n montexte monfichier: Retourne toutes les lignes ainsi que leur
numéro où montexte apparaît dans monfichier 112
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La Commande grep: Exercice
1. Créer un fichier fruits qui contient les fruits suivants un par ligne :
tomate, poire, pomme, cerise, Fraise, fraise, kiwi, POMME3, afraise,
fraiseb
2. Chercher les lignes avec les critères suivants :
Système d’exploitation I

a.Le nom doit être Fraise ou fraise


b.se est en fin de nom
c.ignorer les lignes finissant en se
d.ai est présent dans le nom
e.ignorer les lignes contenant ai
f.Nom contenant un chiffre numérique
g.Nom contenant la chaîne mm ou MM
3. Copiez le fichier /etc/passwd dans votre home directory. Chercher
selon les critères suivants:
Anouar DARIF

a.la ligne commençant par votre nom de login


b.les lignes commençant par des noms de login ne contenant pas de
chiffre. 113
c.Les lignes commençant par des noms de login de 3 ou 4 caractère
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La Commande grep: Correction
1. Utiliser vi
2. Fichier fruits
a. grep "^[fF]raise$" fruits ou grep -i "^fraise$" fruits
Système d’exploitation I

b. grep "se$" fruits ou grep -E "se$" fruits


c. grep -v -E "se$" fruits
d. grep "ai" fruits
e. grep -v "ai" fruits
f. grep "[0-9]" fruits
g. grep "[mM]\{2\}" fruits ou grep -i mm fruits
plus correctement : grep "mm\|MM" fruits
3. Fichier passwd
a. grep "^monlogin" passwd
Anouar DARIF

b. grep "^[^0-9][^0-9]*:" passwd


ou grep "^[a-z][a-z]*:" passwd
a. grep "^.\{3,4\}:" passwd
114
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 cat : concatène des fichiers
 Cette commande est utilisée pour la concaténation des fichiers ainsi
que leur affichage à l'écran
 cat mon_fichier: affiche le contenu du fichier ligne par ligne
Système d’exploitation I

 cat mon_beau_fichier.txt mon_autre_beau_fichier.txt: le contenu


des deux fichiers s'affichent à la suite
 cat f1 f2 .. > f : concatène f1, f2 .. dans le nouveau fichier f
 cat fichiersource.txt >> fichiercible.txt: le fichier source restera tel
quel et le fichier cible sera la concaténation du fichier cible et du
fichier source.
 cat >> mon_super_beau_fichier.txt [taper le texte à ajouter dans le
fichier]: un texte pourra directement être ajouté à la fin du fichier
Anouar DARIF

sans avoir passer par un éditeur de texte.

115
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande more
 Cette commande est le prédécesseur de la commande "less". Elle
permet de naviguer dans un document mais possède peu de
fonctionnalités contrairement à "less".
Système d’exploitation I

 lire un fichier ou plusieurs fichiers à la suite


• more [nomdufichier] [nomdufichier] [nomdufichier]: les fichiers
s'affichent à la suite page par page.
 lire tous les fichiers présents dans un répertoire
• more *.[extensiondufichier]: résultat : tous les fichiers seront
présentés fichier par fichier.
 Options les plus utiles avec more
more (option) [nomdufichier]
Anouar DARIF

 -s : pour regrouper les lignes blanches consécutives en une seule


 -f : pour ne pas couper les lignes longues
116
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande less
 less est une commande Unix permettant de visualiser un fichier
texte page par page (sans le modifier). Sa fonction est similaire à la
commande more, mais permet en plus de revenir en arrière ou de
Système d’exploitation I

rechercher une chaîne.


 Contrairement à vi (qui permet aussi de visualiser des
fichiers), less n'a pas besoin de charger entièrement le fichier en
mémoire et s'ouvre donc très rapidement même pour consulter de
gros fichiers. Sa syntaxe est:
less [options] <fichier>
 Options les plus fréquentes :
• -e ou -E : Quitte automatiquement la deuxième fois que la fin du
Anouar DARIF

fichier est atteinte, ou dès la première fois avec -E.


• -F : Quitte automatiquement si le fichier tient sur le terminal.
• -m ou -M : Prompt long a la more.
117
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande less
• -r ou -R : Autorise les caractères spéciaux.
• -x : Règle la taille des tabulations.
• -~ : ne comble pas les lignes vides par des ~
Système d’exploitation I

 Exemples:
• less -M readme.txt
Afficher "readme.txt" avec les informations de position
• less -Emr~ monFichier
Affiche monFichier page par page avec un prompt long (affichage
du pourcentage du fichier parcouru) en affichant les caractères
spéciaux sans combler les lignes vides par des ~
• file * | less
Anouar DARIF

Affichage plus pratique du résultat de la commande 'file'

118
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande cut
 La commande cut présente 2 formes suivant que l'on sélectionne
des colonnes de caractères ou qu'on distingue des champs séparés
par un caractère précis.
Système d’exploitation I

cut [option] [fichier]


 Option:
 -d : spécifie le délimiteur
 -f : sélectionne des champs.
 -c : sélectionne des colonnes
 sélection_colonne
cut -c(sélection_colonnes) [fichiers]
Anouar DARIF

• Exemples
 affiche le 5ième caractère
cut -c5 fichier
119
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 cut : sélection de colonnes
 affiche du 5ième au 10ème caractères
cut -c5-10 fichier
 affiche le 5ième et le 10ème caractères
Système d’exploitation I

cut -c5,10 fichier


 affiche à partir du 5ième (jusqu'à la fin)
cut -c5- fichier
 Sélection champs
cut -d(séparateur) -f(sélection_champs) [fichiers]
• Exemples
 cut –d ": " –f1,3 /etc/passwd : affichage du nom et du
numéro (uid) de chaque utilisateur ( champs 1 et 3 avec
Anouar DARIF

séparateur : du fichier /etc/passwd

120
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande wc
 La commande wc compte le nombre de lignes, de mots et de
caractères
wc [options] <fichier>
Système d’exploitation I

 Options:
• -l : affiche le nombre de lignes
• -c : affiche le nombre de bytes
• -m : affiche le nombre de caractères
• -L : indique la longueur de la plus longue ligne
• -w : affiche le nombre de mots
•…
 Exemples:
• Nombre de lignes, mots et caractères du fichier depts2012
Anouar DARIF

121
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 wc : sélection de colonnes
Système d’exploitation I

• Nombre de caractères contenus dans un texte saisi au clavier


(attention au saut de ligne ajouté par la commande echo)
Anouar DARIF

122
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 tr : Translate
 tr, est un filtre ne reconnaissant pas les expressions régulières.
Cette commande est le plus souvent associée à des redirections
Les caractères entrés sont traités et le résultat est envoyé sur la sortie
standard
Système d’exploitation I

tr [options] ch1 ch2 <fich1 >fich2


 Remplace toutes les occurrences de TOUS les caractères de ch1 par le
caractère de ch2, de même rang, dans le flot d'entrée.
 Options:
•-c : Tous les caractères qui ne sont pas spécifiés dans la première
chaîne sont convertis selon les caractères de la seconde.
•-d : Efface le caractère spécifié
•-s : Si le caractère spécifié se répété plusieurs fois de suite, il est
réduit à une seule unité
Anouar DARIF

•Exemple: pour convertir et afficher la ligne saisie au clavier en


minuscules read ligne; echo $ligne | tr 'A-Z' 'a-z
• pour supprimer toutes les minuscules non accentuées 123
•echo $ligne | tr -d a-z
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sort
 sort : permet de lire et de trier le contenu des fichiers
sort [–options] [+c1 [-c2]] [fichier ….]
 Les caractères ``+'' et ``-'' permettent de spécifier de quelle colonne
Système d’exploitation I

à quelle colonne le tri doit s'effectuer (1ere colonne pour 0,


2eme colonne pour 1...)
 options:
 - r : ordre inversé
 - o fichier_res: résultat du tri dans fichier_res
 - n : tri numérique
 - m : fusion des fichiers d’entrée
 - d : tri sur l’ordre alphabétique
Anouar DARIF

 -t x : choix du séparateur de champ x au lieu de espace ou


tabulation par défaut
 Exemple: cat /etc/passwd |grep " bash$" |sort –o resultat 124
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande paste
 Permet de coller séquentiellement les lignes correspondantes de
chaque fichier, séparé par des tabulations, vers la sortie standard.
Ne pas confondre avec l'un derrière l'autre (cat f1 >> f2)
Système d’exploitation I

Paste [–options] [fichier]


 options:
 -dx : Le caractère x définit le séparateur de champ
 -s : Les lignes sont remplacées par des colonne
 Exemple: avec 2 fichiers contenant les dépenses d'un ménage pour
le mois de janvier 2012 et février 2012. Les catégories sont
mentionnées dans le même ordre.
Anouar DARIF

125
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande paste
Système d’exploitation I

 Mettre sur la même ligne les montants de chaque catégorie.

 Concaténer toutes les lignes en une seule


Anouar DARIF

126
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 sed (streameditor) est un éditeur non interactif.
 Cette commande permet d'appliquer un certain nombre de
commandes sur un fichier puis d'en afficher le résultat (sans
modification du fichier de départ) sur la sortie standard.
Système d’exploitation I

sed [options] 'fonctions' fichier-a-traiter


sed [-n ] –e ’programme sed’ fichier-a-traiter
ou sed [-n ] -f fichier-programme fichier-a-traite
 -n : écrit seulement les lignes spécifiées (par l'option /p) sur la sortie
standard
n : la ligne de numéro n
$ : la dernière ligne
n1,n2 : les lignes entre les lignes n1 et n2
 -e : permet de spécifier les commandes à appliquer sur le fichier.
Anouar DARIF

Cette option est utile lorsque vous appliquez plusieurs commandes.


Afin d‘éviter que le shell interprète certains caractères, il faut mieux
encadrer la commande avec des ' ou des ''
127
 -f : les commandes sont lu à partir d'un fichier
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 La fonction de substitution s
sed "s/expr-régulière/remplacement/options" fichier-a-traiter
• La fonction de substitution s permet de changer la première ou
toutes les occurrences d'une chaîne par une autre
Système d’exploitation I

• Options:
Sans précision, la commande ne s'applique qu'à la 1ère
occurrence de chaque ligne.
0...9 : indique que la substitution ne s'applique qu'à la nième
occurrence
g : effectue les modifications sur toutes les occurrences trouvées.
• Exemples:
sed -e "s/[Ff]raise/FRAISE/g" fichier : substitue toutes les chaînes
Fraise ou fraise par FRAISE
Anouar DARIF

sed "s/[Cc]omputer/COMPUTER/g" fichier


sed " s/moi/toi/g " fich.moi > fich.toi
sed "s/toto/TOTO/3" fichier : change la troisième occurrence de
128
la chaîne toto par TOTO
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 La fonction de suppression
• La fonction de suppression d supprime les lignes comprises dans un
intervalle donné.
sed "n1,n2d" fichier
Système d’exploitation I

• Exemples:
• sed "10,20d" fichier : Cette commande va supprimer les lignes 10 à
20 du fichier
• sed "10d;20d" fichier : Cette commande va supprimer les lignes 10
et 20 du fichier
• sed "/smi/d" fichier : supprime les lignes contenant la chaîne smi
• sed "/smi/!d" fichier : supprime toutes les lignes ne contenant pas
la chaîne smi
• sed /^$/d fichier : détruire toutes les lignes vides d'un fichier
Anouar DARIF

• sed "/^From/!d" fichier : On n'efface tout sauf les lignes


commençant par From , donc on imprime les lignes commençant
par From.
129
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 La translitération
• Sous ce terme un peu complexe se cache un concept assez simple à
comprendre. La translitération veut dire changer de lettre, tout
Système d’exploitation I

simplement. Par exemple, vous avez un problème d’encodage avec


les accents et vous voulez tous les faire sauter.
sed " y/éèêë/eeee/ "
Commandes groupées
• Voici une possibilité qui peut faire gagner un temps précieux. Il est
possible d’appliquer plusieurs commandes à la fois en utilisant les
accolades “{“ et “}”.
• remplacer tous les "e" accentués par des "e" et réécrire "Dupond"
avec un "t" aux lignes 2 et 6
Anouar DARIF

sed "2,6 {y/éèê/eee/;s/Dupond/Dupont/g} " fichiersource.txt


• même chose mais sur les lignes qui commencent par "#"
sed '/^#/ {y/éèê/eee/;s/Dupond/Dupont/g}' fichiersource.txt 130
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions : q, r et w
• q (quit) : interrompre l’exécution de sed, la ligne en cours de
traitement est affichée sur la sortie standard (uniquement si -n n’a
pas été utilisée).
Système d’exploitation I

[root@darif-VirtualBox ~]# cat fichier1


smi1
smi2
smi3
smi4
[root@client ~]# sed -e "q" fichier1
smi1

• r (read) : lit le contenu d’un fichier et écrit le contenu sur la sortie


standard. [root@darif-VirtualBox ~]# sed "/ˆsmi/r" fichier1
Anouar DARIF

smi1
smi2
smi3
smi4 131
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions : q, r et w
• w (write) : écrit la ligne sélectionnée dans un fichier.
• sed "/ˆsmi/w resultat" fichier : Ecrire dans le fichier résultat toutes
Système d’exploitation I

les lignes du fichier fichier commençant par la chaîne smi


[root@darif-VirtualBox ~]# sed "/ˆsmi/w fichier2" fichier1
smi1
smi2
smi3
smi4
[root@darif-VirtualBox ~]# cat fichier2
smi1
smi2
smi3
Anouar DARIF

smi4

132
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions : p, l et =
• p (print) : affiche la ligne sélectionnée sur la sortie standard.(Elle
invalide l’option –n)
Système d’exploitation I

• l (list): affiche la ligne sélectionnée sur la sortie standard avec en


plus les caractères de contrôles en clair avec leur code ASCII (deux
chiffres en octal).
• = : donne le numéro de la ligne sélectionnée sur la sortie standard.
• Exemples:
• sed "/smi/=" fichier : afficher le numéro de la ligne contenant la
chaîne smi.
• sed –n "10,20p" fichier : sort sur stdout les lignes 10 à 20 du fichier
• sed "/toto/=" fichier : Cette commande va afficher le numéro de la
Anouar DARIF

ligne contenant la chaîne toto.


• sed –n "10p;20p" fichier : sort sur stdout les lignes 10 et 20 du
fichier
133
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions : p, l et =
Système d’exploitation I
Anouar DARIF

134
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions a et i
• La fonction a (append) va placer un texte après la ligne sélectionnée.
La syntaxe est la suivante: a\ le texte
• La fonction i (insert) va placer un texte avant la ligne sélectionnée.
Système d’exploitation I

La syntaxe est la suivante: i\ le texte


• Concrètement vous pouvez appeler la fonction i ou a dans un fichier
de commande de sed. Par exemple, soit votre fichier prog.sed suivant:
1i\
Début du traitement du fichier
s/[cC]haine1/CHAINE1/g
a \ Fin du traitement\
de notre fichier
• On exécute la commande en tapant: sed -f prog.sed fichier-a-traiter
Anouar DARIF

• Dans ce programme la ligne Début du traitement du fichier est


insérée avant la ligne 1, Toutes les occurrences chaine1 ou Chaine1
sont remplacées par CHAINE1 et insertion après la dernière ligne les
135
deux lignes: Fin du traitement et de notre fichier
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions a et i
• Exemple 1
Système d’exploitation I
Anouar DARIF

136
SMI_S3
 Système d'exploitation UNIX
 Les filtres
 La commande sed
 Les fonctions a et i
• Exemple 2
Système d’exploitation I
Anouar DARIF

137
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Cette commande permet d'appliquer un certain nombre d'actions sur un
fichier. La syntaxe est inspirée du C
 À la différence de sed, awk offre plus de possibilités et possède un
langage de programmation avec des structures conditionnelles, des
Système d’exploitation I

boucles, des fonctions prédéfinies et permet de manipuler des variables.


 Le langage de programmation awk est un langage interprété avec une
syntaxe proche du langage C.
 syntaxe
awk [-F] [-v variable] [-f fichier de commandes] 'program' fichier
 Options:
• -F: Spécifie les séparateurs de champs
• -v: Définie une variable utilisée à l'intérieur du programme
• -f: Les commandes sont lu à partir d'un fichier.
Anouar DARIF

 principe de fonctionnement
• Le programme awk est une suite d'action de la forme : motif { action },
le motif permet de déterminer sur quels enregistrements est appliquée
138
l'action.
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Un enregistrement est une chaine de caractères séparée par un
retour chariot, en général une ligne.
• Un champ est une chaine de caractères séparée par un espace (ou
par le caractère spécifié par l'option -F), en générale un mot.
Système d’exploitation I

 Un enregistrement est référencé par $0. Les champs sont référencés


par $1, $2…$NF ( dernier champ).
 Les variables prédéfinies :
• FS : Field Separator représente le séparateur de champs ( par défaut
espace).
• FILENAME : Nom du fichier d’entrée courant
• FNR : numéro de ligne dans le fichier courant
• NF: nombre de champs dans la ligne courante
• NR : num de ligne dans le flot d’entrée
Anouar DARIF

• OFS : séparateur de champs en sortie


• RS : séparateur de lignes en entrée
• $0 : ligne d’entrée courante
139
• $1, $2, …., $NF : 1è, 2ème, ….. Dernier champ de la ligne courante
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Exemples:
•imprime chaque ligne du fichier /etc/passwd après avoir effacé le
deuxième champ
awk -F ":" '{ $2 = "" ; print $0 }' /etc/passwd
Système d’exploitation I

•imprime le nombre total de lignes du fichier


awk 'END {print NR}' fichier
•imprime le dernier champs de chaque ligne
awk '{print $NF}' fichier
•imprime le login et le temps de connexion:
who | awk '{print $1,$5}‘
•imprime les lignes de plus de 75 caractères. (print équivaur à print $0)
awk 'length($0)>75 {print}' fichier
Anouar DARIF

•sélectionne les lignes dont le cinquième champ est vide


awk –F: ‘$5 == " " ‘ /etc/passwd
•awk -F":" '{print "Le répertoire personnel de " $1 " est " $6}'
140
/etc/passwd
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Exemples:
Système d’exploitation I
Anouar DARIF

141
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Exemples:
•Numérote les lignes du fichier: awk '{ print NR " : " $0 }' fichier
•Imprime de la ligne 3 à la ligne 5 , chaque ligne précédée par son
numéro: awk 'NR == 3 , NR == 5 {print NR" : " $0 }' fichier
Système d’exploitation I
Anouar DARIF

•le fichier fich.numerote contient le fichier fichier avec les lignes


numérotées: awk ' { print NR " :" , $0 > "fich.numerote" } ' fichier
142
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Programme awk
• Un programme awk est composé de 3
blocs :
• Bloc 1 ( facultatif) : commençant par
Système d’exploitation I

BEGIN, il est exécuté avant le début de


la lecture du fichier en entrée.
• Bloc 2 : Pour chaque ligne du fichier
en entrée, on vérifie les sélections
une après l’autre, si la sélection est
vérifiée on exécute l’action
correspondante. Une sélection vide
correspond à une application à toutes
les lignes.
Anouar DARIF

• Bloc 3 ( facultatif) : commençant par


END, il est exécuté à la fin de la lecture
du fichier. 143
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Programme awk: Exemple 1
•Verification du fichier /etc/group, le groupe 600 s'appelle t-il bien FPSMI ?
•gedit test.awk, puis la saisie du code suivant
Système d’exploitation I

Exécution du script «test.awk » : awk –f test.awk /etc/group


Anouar DARIF

144
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Programme awk: Exemple 2
Système d’exploitation I
Anouar DARIF

145
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Programme awk
• Constantes :
Chaines de caractères ( "chaine")
Système d’exploitation I

Nombres ( 1, -5, 1.2…)


• Variables:
Variables utilisateurs : Suite de lettres, de chiffres et du caractère
'_‘ qui ne commence pas par un chiffre. Les variables ne
nécessitent pas de déclaration ni de définition de type.
Les variables de champs: $1, $2, ..., $NF
• Exemple: Tous les utilisateurs du groupe users(GID 22)basculeront
dans le groupe boulot(GID 24)
Anouar DARIF

146
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Opérateurs :
• Affectation = += -= *= /= %= ^=
• Arithmétiques + - * / % ^
• Incrément, décrément ++ --
Système d’exploitation I

• Logiques && || !
• Comparaison < > <= >= == !=
• Conditionnelle ? : (c?e1:e2)
• ϵ à un tableau in (i in T = 1 si T[i] existe, 0 sinon)
• Correspondance ~ !~ ( $1 ~ /ER/)
• Structures de contrôle:
 La plupart des structures de contrôle ont la même syntaxe et
la même sémantique que celles du langage C
 if(expression) instructions [else instructions]
Anouar DARIF

 for(exprInit; exprCond; exprInc) instructions


 for(variable in tableau) instructions
 while (expression) instructions
147
 do instructions while (expression)
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Structures de contrôle: Exemple 1
• Soit un fichier source test.txt, contenant les lignes suivantes:
Système d’exploitation I

• test.awk un fichier contenant le code suivant:


Anouar DARIF

• Dans le script test.awk suivant, si l'enregistrement contient « anouar »


et si le quatrième champ est égal à « adresse », il affiche le cinquième
champ, sinon, si le second est égal à « adresse », cela affiche le
148
troisième champ.
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Structures de contrôle: Exemple 2
• Dans le script test.awk suivant, si l'enregistrement contient
« mohamed » et si l'un des champs est égal à « adresse », il affiche le
champ suivant. Si le champ « adresse » est à la fin, une ligne vide
Système d’exploitation I

s'affiche à la place.
Anouar DARIF

149
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Structures de contrôle
Exercice : Ecrire script awk qui teste si les utilisateurs ont un mot de
passe ou non.
Système d’exploitation I
Anouar DARIF

150
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Tableaux:
 Aucune déclaration n’est nécessaire, et pas besoin de préciser la taille.
 Le tableau est vu comme une suite de ( indice, valeur).
Système d’exploitation I

 Indice peut être nombre ou chaîne.


 Accès aux éléments d’un tableau : tableau[indice]
 Exemples:
T[1] = "Un" ; T["truc"] = 100.
Vérification de l’existence d’un indice :
if ( x in T) … teste si T[x] existe.
x in T est équivalent à T[x] != ""
Anouar DARIF

151
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
• Tableaux:
 Exemples (suite):
Système d’exploitation I
Anouar DARIF

152
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Fonctions : on peut utiliser les fonctions prédéfinis ou définir nos
propres fonctions.
 Exemples de fonctions prédéfinies:
Système d’exploitation I

• printf(format, liste_expr) comme en C.


• length(chaine) renvoie la longueur de la chaine, si chaine vide $0
est pris par défaut.
• tolower/ toupper (chaine) : renvoie la conversion de chaine en
miniscule/ majuscule.
• Fonctions mathématiques :
 cos(x) cosinus (radian)
 exp(x) exponentielle à la puissance x
Anouar DARIF

 int(x) partie entière


 log(x) logarithme naturel
 rand(x) nombre aléatoire (entre 0 et 1) 153
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 sin(x) sinus (radian)
 sqr(t) racine carrée
 atan2(y,x) arctangente de x/y en radian (entre -pi et pi)
Système d’exploitation I

 srand(x) définition d'une valeur de départ pour générer un


nombre aléatoire
•…
 Fonctions définies par l'utilisateur
Vous pouvez définir une fonction utilisateur de telle sorte qu'elle
puisse être considérée comme une fonction prédéfinie.
La syntaxe est la suivant:
Fonction mafonction(liste des paramètres){
Anouar DARIF

instructions
return valeur
154
}
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Fonctions: exemple
Système d’exploitation I
Anouar DARIF

155
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Syntaxe des sélections
• Une expression régulière:
vérifiée sur toute la ligne : /expression/
Système d’exploitation I

vérifiée sur un champs de la ligne : $n ~ /expression/


• Relation en utilisant <, >=,==, !=, >=, >
Exemple: $1== "chaine", NF!=5, $NF<50, ($1+$2)/2 >=10
• Combinaison de sélections :
 A l’aide des opérateurs logiques : && (et), ||(ou), ! (négation).
 A l’aide des intervalles en utilisant virgule.
 Exemple: /début/, /fin/ : toutes les lignes entre la 1ière ligne qui
contient début et la dernière ligne qui contient fin.
Anouar DARIF

156
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Actions
• Les actions permettent de transformer ou de manipuler les
données, elles contiennent une ou plusieurs instructions.
Système d’exploitation I

• La plupart des instructions est inspirée du langage C.


• Les instructions sont délimitées par ';' ou fin de ligne ou '}‘.
 Commentaire et action vide
• Le commentaire est précédé par #. tout ce qui est entre # et la fin
de la ligne est ignoré par awk
• Une action vide est représenté par ;
 break, continue
• Break: sortie de boucle
Anouar DARIF

• Continue: commence une nouvelle itération de la boucle.

157
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Exemples
• awk -F: '{ print $1, $3 }' /etc/passwd
• awk -F: '{ print $1, $NF }' /etc/passwd
Système d’exploitation I

• awk -F: '{ print NR, $0 }' /etc/passwd


• awk -F: 'NR>=20 { print NR, $0 }' /etc/passwd
• awk -F: '/sys/ {print NR, $0 }' /etc/passwd
• awk -F: '/sys/ {print NR, $0; ++x } END {print "total", x} '
/etc/passwd
• awk -F: '{for (i=NF; i>=1; i--) print $i}' /etc/passwd
• awk -F: '{for (i=NF; i>=1; i--) printf(" %s ", $i); printf("\n"}'
/etc/passwd
Anouar DARIF

158
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 Exercice
Considérons le fichier Etudiants dont chaque ligne contient les
données sous le format suivant:
Système d’exploitation I

nom prénom note


1. Afficher la première colonne.
2. Afficher les numéros de lignes qui ne contiennent pas le bon
nombre de colonnes.
3. Afficher les étudiants qui ont la moyenne.
4. Afficher le contenu du fichier en ajoutant une ligne d’entête et
en formatant la sortie.
5. Afficher à la fin le total des notes, et la moyenne de la classe, la
Anouar DARIF

note minimale et la note maximale.

159
SMI_S3
 Système d'exploitation UNIX
 Les filtres
La commande awk
 correction
1. awk '{print $1}' Etudiants
2. awk 'NF < 3 {print NR}' Etudiants
Système d’exploitation I

3. awk '$3 >= 10 {print $1, $2}' Etudiants


awk '{ if ($3 >= 10) print $1, $2}' Etudiants
4. awk 'BEGIN {printf(" %-10s%-10s%-6s\n", "Nom", " Prénom",
"Note")} {printf(" %-10s%-10s%-6d\n",$1, $2,$3)}' Etudiants
5. Prg-awk BEGIN {printf("%-10s%-10s%-6s\n", "Nom", "Prénom",
"Note"); Total =0;Min =20; Max=0;}
6. { printf("%-10s%-10s%-6d\n",$1,$2,$3);
Total += $3;
Anouar DARIF

if ($3 < Min) Min =$3;


if ($3 > Max) Max =$3;}
160
END { print "Total",Total print "Min", Min print
SMI_S3
 Système d'exploitation UNIX
 Processus
 Un processus est un programme en cours d’exécution, il est identifié
par un numéro unique appelé PID ( process identification).
 Chaque processus a un processus parent, excepté le processus init
dont le pid est 1. le processus parent est caractérisé par le PPID (
parent pid)
Système d’exploitation I

 visualisation
• ps [option] : permet d'obtenir la liste des processus qui tournent au
moment où vous lancez la commande
darif@darif-VirtualBox: ~$ ps
PID TTY TIME CMD
1997 pts/0 00:00:01 bash
PID : c'est le numéro d'identification du processus. Chaque
processus a un numéro unique qui permet de l'identifier.
TTY : c'est le nom de la console depuis laquelle a été lancé le
Anouar DARIF

processus.
TIME : la durée d'exécution du processus.
 CMD : le programme qui a généré ce processus 161
SMI_S3
 Système d'exploitation UNIX
 Processus
Manipulation
• Options
 Sans option : affiche les processus de la session active
 -e : affiche tous les processus
Système d’exploitation I

 -f : affiche les informations au format long


 -u : Affiche les processus de l'utilisateur qui exécute la
commande
 -au : Affiche les processus de tous les utilisateurs
 -aux : Affiche l'intégralité des processus du système. Équivalent
à ps –A
• Exemples d'utilisation :
 ps -u UTILISATEUR : lister les processus lancés par un utilisateur
ps –aux : Tous les processus en cours
Anouar DARIF

 ps -ef : permet d’obtenir la liste de tous les processus lancés par


tous les utilisateurs sur toutes les consoles
162
SMI_S3
 Système d'exploitation UNIX
 Processus
Manipulation
•top : Liste en temps réel les processus sur l'ordinateur et les
ressources utilisées (permet de connaître les processus
consommateurs de ressources).
Système d’exploitation I

•kill [option] pid : envoie un signal à un processus pour modifier son


comportement; kill ne comprend que les PID. killall quant à lui
comprend le nom du processus.
•Options les plus fréquentes :
 Sans option : termine le processus
 -s : Indique quel signal s à envoyer au processus ; Le signal peut
être identifié soit par son nom (exemple : SIGTERM) soit par son
numéro (exemple : 9) ; Cette option peut être remplacée par le
numéro du signal : -s 9 est équivalent à -9.
Anouar DARIF

 -l : Affiche la liste complète des signaux.

163
SMI_S3
 Système d'exploitation UNIX
 Processus
Manipulation
•Les signaux les plus courants sont :
 HUP signal 1 : signal de fin d'exécution où le processus doit relire
son fichier de configuration.
Système d’exploitation I

 TERM signal 15 : Le signal Terminate indique à un processus qu'il


doit s'arrêter.
 KILL signal 9 : Le signal Kill indique au système qu'il doit arrêter un
processus qui ne répond plus.
•Exemples d'utilisation :
 kill -15 14774 : Envoie le signal 15, ou TERM, au processus ayant
le numéro 14774 ce qui a pour effet de terminer proprement le
processus.
 kill -9 7804 : Envoie le signal 9, ou KILL, au processus ayant le
Anouar DARIF

numéro 7804 ce qui a pour effet de tuer le processus.


 killall -TERM firefox-bin : Envoie le signal TERM, ou 15, au
processus firefox-bin ce qui a pour effet de le fermer. 164
SMI_S3
 Système d'exploitation UNIX
 Processus
Manipulation
•L'option par défaut de kill est TERM, c'est pourquoi il n'est pas
nécessaire de le préciser explicitement. kill et kill -TERM sont donc
équivalents.
Système d’exploitation I

•nice [-priorite] commande : lancer la commande en modifiant sa


priorité. ( Ex. nice -10 ma-commande)
•renice : modifier la priorité d’un processus en exécution. ( Ex. renice
20 -p 8564 )
•at lance une commande à un moment donné. (Ex : at 22:45 -f fichier)
•batch lance une commande quand la charge de l'ordinateur le
permettra. (Ex : batch -f fichier)
•at et batch fonctionnent même si l'utilisateur est délogué.
 Enchainement
Anouar DARIF

• Pour exécuter des commandes séquentiellement on utilise « ; ».


cmd1; cmd2; cmd3
165
 Exemples: date;whoami;ls
SMI_S3
 Système d'exploitation UNIX
 Espace Disque
du (disk usage) affiche la taille occupée par le fichier ou
répertoire spécifié par l’argument chemin.
du [option] [chemin]
 Options les plus fréquentes :
Système d’exploitation I

• -a : Afficher pour tous les fichiers et pas uniquement les répertoires.


• -s : Afficher le total sans lister les différents fichiers
• -c : Faire un total après avoir tout affiché.
• -h : Ajoute un suffixe correspondant à l'unité (K, M, G)
• -H : Idem que -h mais en puissance de 10
 Exemple d'utilisation :
• du -hs dir : Affiche la taille du répertoire dir ou du répertoire
courant si dir est omis.
• du -ch /home/MonUtilisateur : Affiche la taille des répertoires
Anouar DARIF

contenus dans /home/MonUtilisateur en utilisant un suffixe puis le


total.
• du -sm ~/Images/*.jpg : Affiche la taille totale des fichiers JPG
166
contenus dans le répertoire ~/Images
SMI_S3
 Système d'exploitation UNIX
 Espace Disque
 df [chemin] (describe filesystem) affiche la capacité totale d’un
système de fichiers (généralement en KiloOctets), le volume utilisé et
le volume restant disponible.
 Options les plus fréquentes :
• -a : Affiche tous les systèmes de fichiers, y compris ceux de 0 blocs
Système d’exploitation I

(par exemple : proc, sysfs, usbfs et tmpfs)


• -h : Ajoute aux valeur un M pour mébioctet (2^20 octets) pour que
ce soit plus lisible.
• -H : Pareil que -h mais en mégaoctets (10^6 octets).
• -T : Affiche le type du système de fichiers.
 Exemples d'utilisation :
• df –h : Affiche la quantité d'espace disque utilisé en mébioctets par
les systèmes de fichiers.
• df /home : Affiche la quantité d'espace disque utilisé par la partition
Anouar DARIF

/home (si elle existe)


• df -T –h : Affiche le nom des partitions et leur point de montage.
 Alternative : On peut aussi utiliser dfc, avec affichage en couleur de
167
l'occupation des systèmes de fichiers.
SMI_S3
 Système d'exploitation UNIX
 Espace Disque
 fdisk de Linux permet de créer des partitions sur votre disque dur au
même titre que son homologue sous DOS.
 Le partitionnement avec fdisk entraînera la perte de toutes les
données présentes sur le disque sur lequel vous effectuez les
Système d’exploitation I

opérations!
 fdisk sans aucun argument utilisera le premier disque dur qu'il trouve.
Si jamais vous voulez préciser à fdisk le disque à partitionner, il faut lui
passer le nom du périphérique comme argument. Dans l'exemple
suivant on indique explicitement à fdisk que l'on désire partitionner le
second disque dur : fdisk /dev/hdb
 Noms des disques durs
• Sous Linux, le nom des périphériques de stockage varie selon qu'il
s'agit de disques SCSI ou IDE.
Anouar DARIF

Pour des disques IDE, le premier sera nommé hda, le second hdb, ...
Pour des disques SCSI, le premier s'appellera sda, le second sdb, ...
168
SMI_S3
 Système d'exploitation UNIX
 Espace Disque
 Les options les plus fréquentes :
d destruction d'une partition
l liste des types de partitions
m Impression du menu en cours
Système d’exploitation I

n création d'une nouvelle partition


p Affichage des partitions
q Sortie de fdisk sans sauvegarde des paramètres
t Modification du type de partition
v Vérification de la table des partitions
w Sauvegarde des modifications et sortie de fdisk

 Exemples d'utilisation
Anouar DARIF

• sudo fdisk -l /dev/sd[ab]


• sudo fdisk /dev/sda
Commande (m pour l’aide): 169
SMI_S3
 Système d'exploitation UNIX
 Le shell

 Un interpréteur de commandes (le "shell", la coquille qui entoure le


"noyau" du système) est un programme qui sert d'intermédiaire entre
l'utilisateur et le système d'exploitation.
Système d’exploitation I

 Sa tâche essentielle est l'exécution de programmes. Pour cela, il


effectue (en boucle infinie) :
• la lecture d'une ligne
• sa compréhension comme une demande d'exécution d'un
programme avec d'éventuels paramètres.
• le lancement de ce programme avec passage des paramètres
• d'éventuelles redirections d'entrées-sorties
• les exécutions de scripts (fichiers de commandes
Anouar DARIF

170
SMI_S3
 Système d'exploitation UNIX
 Le shell
 Les variables d'environnement système
 Connaitre le shell utilisé : ps ou echo $SHELL
 Connaitre la version du shell pour bash par exemple :
bash --version
Système d’exploitation I

 L’environnement du Shell est défini par des variables.


 La variable $HOME contient le chemin du répertoire personnel
 La commande env donne la liste de toutes les variables
d’environnement avec leur contenu.
 Exemple :
• la variable PATH qui définit l’ensemble des chemins dans lesquels on
cherche un exécutable lancé.
• echo $PATH Affiche le contenu de PATH
Anouar DARIF

• export PATH=$PATH:. Modifie le contenu de PATH

171
SMI_S3
 Système d'exploitation UNIX
 Le shell
 Configuration de l’environnement du shell
 Modification des variables
• Directement en ligne de commandes en utilisant la commande
export ou en utilisant une affectation directe:
Système d’exploitation I

export PATH=$PATH:. ou PATH=$PATH:.


Ceci modifie la variable uniquement pour la console dans laquelle
elle a été lancée.

• export PATH="$PATH:/home/smi/bin" :pour ajouter le chemin vers


les exécutables du rép. Personnel.
• export PATH="$PATH :./" :pour toujours ajouter le répertoire
courant (non présent par défaut).
Anouar DARIF

• En insérant la commande dans l’un des 2 fichiers :


$HOME/.profile ( ou .bash_profile) et $HOME/.bashrc
Le changement sera pris en compte dans chaque console ouverte
172
SMI_S3
 Système d'exploitation UNIX
 Le shell
 Configuration de l’environnement du shell
 Définition des alias
 Un alias permet :
Système d’exploitation I

•d’abréger une longue commande;


•de donner un nouveau nom à une commande déjà existante;
•de modifier le comportement d’une commande existante.
 Création d’un alias : alias nom = valeur …
 alias cx = 'chmod u+x'
 alias rm = 'rm -i‘
 Suppression d’un alias : unalias nom
 Listes les alias disponibles : alias
Anouar DARIF

173
Anouar DARIF Système d’exploitation I SMI_S3

Programmation Shell

174
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Un script shell est un fichier de type texte contenant une suite de
commandes shell, exécutable par l'interpréteur, comme une
commande unique.
 Un script peut être lancé en ligne de commande, comme dans un autre
Système d’exploitation I

script.
 On peut définir des variables et utiliser des structures de contrôle
comme dans un langage de programmation .
 Tout script bash commence-t-il par la ligne suivante : #!/bin/bash
 Le langage bash gère notamment :
• la gestion des entrées-sorties et de leur redirection
• des variables définies par le programmeur et des variables
systèmes
Anouar DARIF

• le passage de paramètres
• des structures conditionnelles et itératives
• des fonctions interne 175
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Créer et lancer un script
 Créer un fichier avec un éditeur de texte en y mettant les commandes
souhaitées
 Rendre le programme exécutable
Système d’exploitation I

 Lancer le Script
• bash nom-script
• ./nom-script
• nom-script
 Le répertoire dans lequel se trouve le fichier shell doit être présent
dans la liste des chemins contenue dans PATH;
 Ou le placer dans un répertoire se trouvant dans PATH.
 Un script peut être une simple liste de commandes
Anouar DARIF

176
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Un premier script
 La première ligne du script doit préciser l'interpréteur utilisé, elle
commence par les deux caractères #!, suivis du chemin de
l'interpréteur.
Système d’exploitation I

 La deuxième ligne est un commentaire


#!/bin/bash Shell à utiliser
# premier Commentaire
echo -n "La date du jour est:" La commande echo
date La commande date
 Ceci est équivalent à la ligne de commandes suivante:
echo -n "La date du jour est: " ; date
 Le fichier contenant ces commandes doit être rendu exécutable:
Anouar DARIF

$ chmod u+x nom_fichier

177
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Créer et lancer un script
 vi e1.sh
#!/bin/bash
echo " ---Bonjour $USER ----- "
Système d’exploitation I

# l'option -n empêche le passage à la ligne


# le ; sert de séparateur des commandes sur la ligne
echo -n "Nous sommes le " ; date
# recherche de $USER en début de ligne dans le fichier passwd
# puis extraction de l'uid au 3ème champ, et affichage
echo "Ton numéro d'utilisateur est " $(grep "^$USER" /etc/passwd |
cut – d: -f3)
 Exécution :
Anouar DARIF

chmod u+x e1.sh


./e1.sh
 Ou directement : sh e1.sh , sh -v e1.sh ( mode trace) 178
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 sorties (Affichage) : echo
 Affiche son argument texte entre guillemets sur la sortie standard,
c-à-d l'écran.
 La validation d'une commande echo provoque un saut de ligne.
Système d’exploitation I

 Exemple : echo "Bonjour à tous !"


 On peut insérer les caractères spéciaux habituels, qui seront
interprétés seulement si l'option -e suit echo:
• \n (saut ligne), \b retour arrière),
• \t (tabulation),
• \c (fin sans saut de ligne)
 Exemples :
• echo "Bonjour \nà tous ! "
Anouar DARIF

• echo -e "Bonjour \nà tous ! "


• echo -e "Bonjour \nà toutes \net à tous ! \c "
179
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Entrées (Lecture): read
 Permet l'affectation directe par lecture de la valeur, saisie sur l'entrée
standard au clavier
 read var1 var2 ... attend la saisie au clavier d'une liste de valeurs pour
Système d’exploitation I

les affecter, après la validation globale, respectivement aux variables


var1, var2 ..

 Exemples:
echo "Donnez votre prénom et votre nom "
read prenom nom
echo "Bonjour $prenom $nom

question="Vous plait-il ? [o/n]"


Anouar DARIF

echo $question
read reponse
echo $reponse 180
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Paramètres
 Un paramètre désigne une entité pouvant contenir une valeur.
 3 Classes de paramètres :
• Variables : identifiés par un nom
Système d’exploitation I

• Paramètres de position : identifié par un numéro


• Paramètres spéciaux : identifiés par un caractère spécial
 Variables
• 2 types de variables :
Système ou variables d’environnement ( PATH, HOME…)
Utilisateur : définis par l’utilisateur
• Affecter une valeur à une variable:
 Opérateur d’affectation = ( Ex : var=valeur) Il ne faut pas mettre
d’espace entre var , = et valeur
Anouar DARIF

 La commande read (Ex: read var, read -p "entrer var:" var) sans
paramètre, ce qui est lu est mis dans la variable REPLY
181
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Paramètres
• Accès à la valeur $var
 Ex: echo $var
• Protection de variable : readonly
• On peut utiliser declare pour déclarer une variable.
Système d’exploitation I

Exemple 1: Exemple 3:
#!/bin/bash #!/bin/bash
x=bonjour var1=SMI1
y=ali var2=SMI2
echo "y est $y" echo "$var1 $var2"
echo "$x $y« readonly var1 var2
Y est ali var1=SMI3
Bonjour ali var2=SMI4
Exemple 2:
Anouar DARIF

#!/bin/bash SMI1 SMI2


echo "veuillez écrire 2 mots" ligne6: var1 : variable en lecture seule
read a b ligne7: var2 : variable en lecture seule
echo "vous avez saisi $a $b" 182
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Paramètres
• On peut utiliser declare pour déclarer une variable.
• Syntaxe: declare [option] var
• Options:
 r : lecture seule
Système d’exploitation I

 i : entier
 a : tableau (array)
 f : fonction(s)
 x : var=$valeur
Exemples
declare -i x=35*2
echo $x
70
Anouar DARIF

declare -ir a=35*2


declare -ir b=5+5
echo $(($a+$b))
80 183
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Paramètres
 Paramètres de position
• Les paramètres de position permettent de récupérer les arguments
d’une commande, un fichier ou une fonction shell.
Système d’exploitation I

• Un paramètre de position est référencé par un ou plusieurs chiffres


L’assignation peut se faire également avec L’assignation de valeurs à
des paramètres de position s’effectue :
soit à l’aide de la commande interne set
soit lors de l’appel d’un fichier shell ou d’une fonction shell.
• Exemples:
 set bonjour Monsieur : $1 contient bonjour, $2 contient Monsieur
 a=1 ; b=2 ; c=3
Anouar DARIF

set $a $b $c
echo $1, $2, $3
les valeurs de a, b, c sont récupérées dans $1, $2, $3
184
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Paramètres
 Paramètres de position
• La commande interne shift décale la numérotation des paramètres
de position ayant une valeur.
• Syntaxe : shift [ n]
Système d’exploitation I

• Elle renomme le n+1 ème paramètre de position en paramètre de


position 1, le n+2 ème paramètre de position en paramètre de
position 2, etc. : (n+1) => 1 , (n+2) => 2 , etc.
• Une fois le décalage effectué, le paramètre spécial # est mis à jour.
set a b c d e
=> 1 2 3 4 5
echo $1 $2 $#
ab5
shift 2
Anouar DARIF

 a b c d e les mots a et b sont devenus inaccessibles


 123
echo $1 $3 $#
185
ce3
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Paramètres
 Paramètres spéciaux
• Un paramètre spécial est référencé par un caractère spécial; et sa
valeur est affectée par le shell.
• $0 : nom du script
Système d’exploitation I

• $* : liste des paramètres


• $# : nombre de paramètres
• $$ : numéro du processus en cours d’exécution
• $? : valeur de retour de la dernière commande
Exemple:
#!/bin/ bash
echo "$0 : c'est le mon du script"
echo "$$ : c'est le PID du script"
echo "$* : c'est la liste des arguments passé au script"
Anouar DARIF

echo "$# : c'est le nombre d'argument passé à la commande"


echo "$1 : c'est le premier argument"
echo "$? : c'est le retour de l' echo " 186
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Substitution: Variables
 Bash réalisera la substitution du contenu d'une variable lorsqu'il
rencontre $ suivi d'un nom de variable
 Deux comportements possibles:
Système d’exploitation I

• Substitution vide: La variable n'est pas définie ou la variable est


définie mais son contenu est vide
• Substitution du contenu: La variable est définie et son contenu est
non nul

Exemple 1: Exemple 2:
MSG1="Jean est un" MSG1="Jean est un "
MSG2="chien fort réputé" MSG2="chien fort réputé"
echo "$MSG1 $METIER $MSG2« METIER="dresseur de"
Anouar DARIF

Jean est un chien fort réputé $ echo "$MSG1 $METIER $MSG2"


Jean est un dresseur de chien fort réputé
187
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Substitution: Commandes
 Bash est en mesure de substituer le résultat d'une ligne de
commandes UNIX
 Le symbole impliqué dans ce genre de substitution est l'accent
grave(`) ou $(…)
Système d’exploitation I

 Exemple :
echo pwd
pwd
echo $(pwd)
/home/darif
 Il est possible d'assigner le résultat d'une ligne de commande UNIX à
une variable
REPERTOIRE=`pwd`
MACHINE=`hostname`
Anouar DARIF

echo -e "Répertoire: $REPERTOIRE\nMachine: $MACHINE"


Répertoire : /home/darif
Machine: darif-VirtualBox 188
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 La commande test
 Bash est en mesure de substituer le résultat d'une ligne de
commandes UNIX
 Permet d'évaluer une expression.
• Si vrai, renvoie 0 (true), sinon, renvoie 1 (false)
Système d’exploitation I

• S'il n'y a pas d'expression, renvoie 1


 Syntaxe: test expression ou [ expression]
 Test sur fichiers, répertoires et chaînes :
Anouar DARIF

189
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 La commande test
• -z: la chaine est vide
• -n: la chaine n’est pas vide
Système d’exploitation I

 Test sur nombres et opérations logiques sur les expressions :


Anouar DARIF

190
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 La commande test
 Exemples :
• test –f /etc/passwd ou [ -f /etc/passwd] passwd est un fichier?
• [ -w fichier ] le fichier est-il modifiable ?
Système d’exploitation I

• [ -r "/etc/passwd" ] fichier lisible ?


• [ -r "/etc/shadow" ] || echo "lecture du fichier interdite "
• b=150; [ $b –gt 150 ] && echo "juste ou pas"
• [ -n "toto" ] ; echo $? affiche la valeur renvoyée 0
• ch="Bonjour" ; [ "$ch" = "bonjour" ] ; echo $? affiche 1
• [ $USER != "root" ] && echo "l'utilisateur n'est pas le \"root\" ! "
• f="/root" ; [ -d "$f" -a -x "$f" ] ; echo $?
• note=9; [ $note -lt 8 -o $note -ge 10 ] && echo "tu n'est pas
Anouar DARIF

convoqué(e) à l'oral"

191
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Neutralisation des caractères
 Certains caractères ont des significations particulières pour
l'interpréteur de commandes Par exemple: &, (, ), *, !, {, },...
 Sans un mécanisme d'échappement, ces caractères spéciaux seront
interprétés par Bash.
Système d’exploitation I

 Les commandes et programmes qui utilisent ces caractères spéciaux


ne pourront pas s'exécuter correctement.
 D'où la nécessité de neutraliser la signification particulière de ces
caractères spéciaux pour Bash.
 Exemple: Affichage de la chaine de caractères "TOTO & TATA"
Anouar DARIF

 Donc, le symbole \ permet la neutralisation du caractère qui le suit


 Nous pouvons neutraliser la signification spéciale du caractère Espace
192
par les symboles " " et ' '.
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Expressions arithmétiques
 Syntaxe ((expr_arith))
 Les expressions arithmétiques et opérateurs sont similaires du
langage C.
 Les priorités sont gérées par un parenthèse habituel
Système d’exploitation I

• echo $((30+2*10/4))
• echo $(( (30+2) * (10-7) /4 ))
 Déclaration variable entière: declare -i b (facultatif)

 Exemple:
declare -i k ; k=1 ; p=1
while [ $k -le 10 ]
do
p=$p * $k
Anouar DARIF

k=$k+1
done
echo "factoriel de $(($k-1)) est $p " 193
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Commande eval
 Cette commande ordonne l'interprétation par le shell de la chaine
passée en argument. On peut ainsi construire une chaine que l'appel à
Système d’exploitation I

eval permettra d'exécuter comme une commande !


 Exemple:
message="Quelle est la date d'aujourd'hui ?
set $message
echo $# ---> le nombre de mots est 6
echo $4 ---> affiche la chaine "date "
Anouar DARIF

eval $4 ---> interprète la chaine "date" comme une commande

194
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structures conditionnelles
 Syntaxes possibles
if suite-de-commandes
if suite-de-commandes
then
Système d’exploitation I

then
bloc-instruction
bloc-instruction1
fi
Else
If suite-de-commandes1 bloc-instruction2
then fi
bloc-instruction1
elif suite-de-commandes2 Le code de retour de la commande
then détermine le test if :
bloc-instruction2 • Code de retour valant zéro: Le
Anouar DARIF

else test if est vrai.


bloc-instruction3 • Code de retour non nul: Le test if
fi est faux
195
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structures conditionnelles
 Exemples
Système d’exploitation I
Anouar DARIF

196
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Branchement conditionnel : case-esac
 Syntaxe
case mot in
cas1) cmd1;;
Système d’exploitation I

cas2) cmd2;;
...
casn) cmdn;;
esac

• mot : contenu d'une variable, expression arithmétique ou logique,


résultat de l’évaluation d'une commande.
• casi : expression régulière constante, * représente le cas default
Anouar DARIF

de C.
• casi à reconnaitre peut s'exprimer sous forme d'expression
rationnelle(ou régulière) utilisant les méta-caractères: * ? [ ] -
197
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Branchement conditionnel : case-esac
 Exemples
Système d’exploitation I

read USER
case $USER in
root) echo "Mes respects M le $USER" ;;
Anouar DARIF

etudiant | stag?) echo "Salut à $USER" ;;


professeur) echo "salut mon $USER \!" ;;
esac 198
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle for-do-done
 Syntaxe
for variable in liste-de-mots
do
Système d’exploitation I

liste-commandes
done
 La variable prend successivement les valeurs de la liste de
mots, et pour chaque valeur, liste-commandes est exécutée
 Exemples:
Anouar DARIF

199
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle for-do-done
 Exemples:
#!/bin/bash #!/bin/bash
Système d’exploitation I

for a in toto tata for u in $*


do do
echo $a echo $u
done done

#!/bin/bash #!/bin/bash
for (( x=0 ; x<5 ; x++ )) for V in $(seq 0 $2)
do do
echo $(( x*2 )) echo $V" x "$1" = "$(expr $V "*“ $1 )
Anouar DARIF

done done

200
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle for-do-done
 Exemple
Système d’exploitation I
Anouar DARIF

201
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle while-do-done
Syntaxe while liste-commandes-1
do
liste-commandes-2
Système d’exploitation I

done
La valeur testée par la commande while est l'état de sortie de la
dernière commande de liste-commandes-1
Si l'état de sortie est 0, alors le Shell exécute liste-commandes-2
puis recommence la boucle
 Exemple:
Anouar DARIF

202
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle while-do-done
 Exemple:
Système d’exploitation I
Anouar DARIF

203
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle until-do-done
 Syntaxe until liste-commandes-1
do
liste-commandes-2
Système d’exploitation I

done

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


 Si l'état de sortie est 1, alors, liste-commandes-2 est exécutée
puis la boucle est recommencée.
 Exemples:
Anouar DARIF

204
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Structure itérative: Boucle until-do-done
 Exemple:
Système d’exploitation I
Anouar DARIF

205
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 L'instruction select-do-done
 Syntaxe
select variable in liste-de-mots
Système d’exploitation I

do
liste-commandes
don

 select, Permet à l'utilisateur de sélectionner une variable parmi


une liste de mots. liste-commandes est exécutée.

 L'instruction select génère un menu à partir de liste-de-mots et


demande à l'utilisateur de faire un choix/
Anouar DARIF

206
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 L'instruction select-do-done: exemples
Système d’exploitation I
Anouar DARIF

207
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Tableaux
 Déclaration:
declare -a nomtab
Système d’exploitation I

 Déclaration facultative, il suffit d'initialiser un de ses éléments


 Initialisation:
nomtab=( val0 val1 ... )
nomtab=( [indice] = val ...)
read -a nomtab
 Affectation: nomtab[3]=val
 Accès: ${nomtab[indice]}
Anouar DARIF

${nomtab[*]} affiche tous les éléments


 Longueur d'un élément: ${#nomtab[indice]}
 Nombre d'éléments: ${#nomtab[*]} 208
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Tableaux
 Exemple:
#!/bin/bash
Système d’exploitation I

declare -a Tab #facultatif


Tab=(il fait beau)
echo $Tab[1]
echo ${Tab[1]}
echo ${#Tab[1]}
echo ${Tab[*]}
echo ${#Tab[*]}
Anouar DARIF

209
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Fonctions Bourne Shell
 Nous pouvons rendre la programmation plus structurée en
utilisant des fonctions. La syntaxe est:
NomDeFonction ( ){
Système d’exploitation I

Commandes
}
 Définition des fonctions Bourne shell: au début du fichier de
commande
 Prend préséance sur les commandes systèmes de même nom
 Peut avoir une valeur de retour: exit n où n est une valeur
numérique (=0: OK,≠0(et<256): Erreur)
 Exemple:
Anouar DARIF

210
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Fonctions Bourne Shell : Exemple
Système d’exploitation I
Anouar DARIF

211
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Fonctions Bourne Shell : Exemple
Système d’exploitation I
Anouar DARIF

212
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Différence entre "$@" et "$*"
 Lorsqu’on utilise entre guillemet, la variable $@ et la variable $*
n'ont pas la même signification
 Pour "$@" l'interpréteur de commandes substitue les paramètres
Système d’exploitation I

de position en leur entourant par des guillemets


 Ce n'est pas le cas pour "$*"

 Exemple
Anouar DARIF

213
SMI_S3
 Système d'exploitation UNIX
 Programmation Shell
 Différence entre "$@" et "$*"
Système d’exploitation I

 Le résultat n'est pas le même!


Anouar DARIF

 Pensez à utiliser "$@" dans vos programmes Bash

214