SUPPORT DE COURS UNIX

publicité
Année Universitaire 2013-2014
Ministères de l’enseignement supérieur
Institut Supérieur des Etudes Technologiques de Gabès
E-mail :[email protected]
SUPPORT DE COURS UNIX
Elaboré par :
TAYARI LASSAAD
TECHNOLOGUE A ISET GABES
E-mail :[email protected]
Cours LINUX(UNIX)
Introduction générale
Chapitre 0
INTRODUCTION GENERALE
AUX SYSTEMES D'EXPLOITATIONS
Objectifs:
 Définir et prouver la nécessité des systèmes d’exploitation.
 Rappeler les notions de base des systèmes d’exploitation.
 Mettre le système UNIX dans son contexte.
Prérequis:
 Architecture des ordinateurs.
 Matériel et systèmes. (MS-DOS, ASSEMBLEUR, Système D’exploitation ...etc.).
Plan
I/INTRODUCTION:
II/Qu’est ce qu’un système d’exploitation?
III/ Principes des systèmes d'exploitation:
III-1/ Les processus:
III-2/ Les systèmes de fichiers:
III-3/ Les interpréteurs de commandes (shell):
III-4/ Classification des systèmes d'exploitations existants:
IV/ Résumé:
TAYARI Lassaad
Page 1
ISET DE GABES
Cours LINUX(UNIX)
Introduction générale
Chapitre 0
INTRODUCTION GENERALE
AUX SYSTEMES D'EXPLOITATIONS
I/INTRODUCTION:
Sans logiciels, un ordinateur n'est qu'un morceau de matériel inutile. Grâce à ces
logiciels, il peut mémoriser, traiter et restituer des informations et servir dans de
nombreuses autres activités qui justifient sont utilité.
Les logiciels se répartissent en deux grandes catégories:
 Les programmes système qui permettent le fonctionnement de l'ordinateur.
 Les programmes d'application qui résolvent les problèmes des utilisateurs.
Le système d'exploitation est le programme fondamental des programmes systèmes. Il
contrôle les ressources de l’ordinateur et fournit la base sur laquelle seront construits les
programmes d’application. Un ordinateur moderne se compose d’un ou plusieurs
processeurs, d’une mémoire principale, d’horloges, de terminaux, d’interfaces de connexion
à des réseaux et d’autres périphériques d’entées sorties (E/S). Un ordinateur est donc un
système fort complexe. L’écriture de programmes qui prennent en compte tous ces
éléments et les gèrent correctement est un travail extrêmement difficile. Bien peut de
programmes seraient développés, si chaque programmeur devrait connaître le
fonctionnement des disques, ainsi que toutes les erreurs qui peuvent apparaître.
TAYARI Lassaad
Page 2
ISET DE GABES
Cours LINUX(UNIX)
Introduction générale
Il y a quelques années, il est apparu clairement qu’il fallait trouver un moyen de libérer les
programmeurs de la complexité du matériel. Ce moyen, qui a évolué petit à petit, consiste à
enrober le matériel par une couche de logiciel qui gère l’ensemble de système.
Il va falloir en fait présenter au programmeur une interface ou machine virtuelle plus facile à
comprendre et à programmer. Cette couche de logiciel est le système d’exploitation.
La situation est présentée par la figure si dessous.
Système
Réservation
bancaire
d’avion
Compilation
Edition
Contrôle
de
processus industriel
jeux
Programmes
d’application
interpréteur de
commande
Système d’exploitation
Programmes
système
Langage machine
Microprogrammes
matériel
Dispositif physique
Le matériel se trouve au niveau le plus bas et se compose lui-même de deux couches ou
plus. La couche la plus basse contient les circuits physiques constitués de circuits intégrés, de
fils électriques, d’alimentation, de tube cathodique et de périphériques physiques. De cette
nature, leurs constructions et leurs fonctionnements concernent l’ingénieur en électricité.
Vient en suite un logiciel de base qui contrôle ces différents périphériques pour fournir une
interface plus simple à la couche suivante. Ce logiciel, appelé un microprogramme, se situe
généralement dans la mémoire morte « ROM ». Il s’agit en fait d’un interpréteur qui
recherche des instructions en langage machine comme ADD, MOV et JMP et les exécuter
l’une après l’autre.
Le Microprogramme ne fait pas réellement partie du matériel, mais il est toujours décrit
dans les manuels des constructeurs d’ordinateurs. Ce qui amène de nombreuses personnes
TAYARI Lassaad
Page 3
ISET DE GABES
Cours LINUX(UNIX)
à le considérer comme
Introduction générale
faisant partie de le « Machine ». Sur certaines machines le
microprogramme est implanté dans le matériel et ne constitue pas a lui seul une couche
distincte.
La fonction primordiale d’un système d’exploitation est de masquer toute la complexité du
matériel et de présenter au programmeur un ensemble d’instructions plus simple à utiliser.
Par exemple LIRE UN BLOC DE FICHIER est conceptuellement plus simple que d’avoir à ce
soucier de déplacer les têtes de lecture puis à ce positionner ...etc.
Le reste du logiciel système se trouve au-dessous du système d’exploitation. On y trouve
l’interpréteur de commande (shell), les compilateurs, les éditeurs et les programmes de ce
type qui ne dépendent pas des programmes d’application. Il faut bien se rendre compte que
ces programmes ne font pas partie du système d’exploitation, bien qu’ils soient fournis par
les constructeurs d’ordinateurs.
Le système d’exploitation est la partie du logiciel qui fonctionne en mode noyau ou mode
superviseur. Elle protège le matériel contre les erreurs de manipulation des utilisateurs. Les
compilateurs et les éditeurs fonctionnent en mode utilisateur.
En fin, on trouve les programmes d’application au-dessus des programmes système. Ces
programmes sont écrits pour les utilisateurs pour résoudre leurs problèmes spécifiques tels
que le traitement des données commerciales, les calculs scientifiques ...etc.
II/Qu’est ce qu’un système d’exploitation?
Définition 1:
 Un système d'exploitation regroupe un certain nombre de fonctions, toutes
destinées à coordonner les opérations d’un ordinateur nécessaires à la mise en oeuvre des
programmes.
Il gère, pour cela, les commandes destinées aux diverses ressources matérielles(mémoire
centrale, périphériques d’entrée sortie,...).
TAYARI Lassaad
Page 4
ISET DE GABES
Cours LINUX(UNIX)
Introduction générale
Définition 2:
 Un système d'exploitation est la couche logicielle qui transforme l’ordinateur en
une machine virtuelle facilement manipulable par un simple utilisateur.
En effet, vu l’architecture complexe de l’ordinateur au niveau du langage machine, il est très
difficile de pouvoir maîtriser la communication entre le processeur et les différents organes
de la machine. D’où la nécessité d’une abstraction simple et de haut niveau qui permet au
programmeur de réaliser des fonctions nécessaires sans se préoccuper de la complexité du
matériel.
Le système d'exploitation est donc un programme qui soustrait le matériel au regard du
programmeur et offre une vue agréable à l’ordinateur.
III/ Principes des systèmes d'exploitation:
L’interface entre le système d'exploitation et les programmes de l’utilisateur est
constituée d’un ensemble « d’instructions » « étendues » fournies par le système
d'exploitation. Ces instructions étendues sont qualifiées d’appels systèmes. Elles varient
d’un système d'exploitation à l’autre.
Généralement, les appels systèmes appartiennent à l’une des grandes classes suivantes: soit
les processus soit les systèmes de fichiers soit les entrées sorties.
III-1/ Les processus:
Le processus est un concept clé de tous les systèmes d’exploitation. Un processus est
un programme exécutable, ses données et sa pile d’exécution, son compteur ordinal, sont
pointeur de pile et les autres registres, ainsi que les autres informations nécessaires à
l’exécution du programme.
Périodiquement, le système d'exploitation décide d’interrompre un processus en cours et de
lancer l’exécution d’un autre.
TAYARI Lassaad
Page 5
ISET DE GABES
Cours LINUX(UNIX)
Introduction générale
Lorsqu’un processus est temporairement suspendu de telle manière, il faut qu’il puisse
retrouver plus tard exactement l’état ou il se trouvait au moment de sa suspension. Il faut
donc que toutes les informations dont il a besoin soient explicitement sauvegardées quelque
part.
Dans un système d'exploitation, les informations relatives à un processus sont sauvegardées
dans une table du système d'exploitation.
Les appels systèmes les plus importants pour la gestion des processus sont ceux qui
concernent la création et le fin des processus.
III-2/ Les systèmes de fichiers:
La deuxième grande catégorie d’appels systèmes, concerne le système de fichiers. Il
faut donc des appels systèmes pour créer et détruire des répertoires et de y mettre ou en
Fichier
retirer des fichiers.
Répertoire
Répertoire
racine
Exemple de ramification d’un système de
fichiers
TAYARI Lassaad
Page 6
ISET DE GABES
Cours LINUX(UNIX)
Introduction générale
III-3/ Les interpréteurs de commandes (shell):
Le système d'exploitation est le code qui exécute les appels systèmes (noyau). Les
éditeurs, les compilateurs et les interpréteurs de commandes ne font absolument pas partie
du système d'exploitation.
L'interpréteur de commandes (shell) constitue la première interface entre l’utilisateur et le
système d'exploitation.
III-4/ Classification des systèmes d'exploitations existant:
Mono-tache
Mono-utilisateur
Multi-utilisateur
« Single-user »
« Multi-user »
MS-DOS
« Single tasking »
OS/2
WindowsNT
Multi- tache
OS/9
UNIX
« Multi tasking »
Windows
windows95
Xwindows
VMS
IV/ Résumé:
Dans cette introduction, nous avons examiné le système d'exploitation sous deux
angles différents: La gestion des ressources et la machine étendue (virtuelle).
Du point de vue de la gestion des ressources, le rôle de système d'exploitation est de gérer
au mieux les différentes parties du système.
Du point de vue de la machine étendue, le rôle de système d'exploitation est d’offrir aux
utilisateurs une machine virtuelle plus facile d’emploi que la machine réelle.
TAYARI Lassaad
Page 7
ISET DE GABES
Cours de LINUX(UNIX)
Le Système UNIX
Chapitre 1
LE SYSTEME UNIX
Objectifs:
 Introduire le système UNIX à travers sont historique.
 Définir le système UNIX en précisant ses caractéristiques.
 Définir le SHELL d’UNIX.
 Aider l'étudiant a ce familiariser avec l'environnement UNIX à travers la procédure
de connexion, quelque commandes simples pour débuter et la procédure de déconnexion.
(Un flash)
Prérequis:
 Le chapitre précédent de ce cours d’UNIX et ses Prérequis.
Plan
I/ Historique
II/ Généralité sur le système
II-1/ Définition du système UNIX
II-2/ Caractéristiques d'UNIX
II-3/ Raison du succès d'UNIX
II-4/ Structure du système UNIX
II-5/ Le SHELL
II-6/ Premier contact avec UNIX
TAYARI Lassaad
Page 7
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
Chapitre 1
LE SYSTEME UNIX
I/ Historique
Le système UNIX a été développé dans les bell loboratories de la firme américaine
AT&T, grâce au travail acharné de l'ingénieur KEN THOMPSON qui a été rejoint par la suite
par son collègue DENNIS RITCHIE.
Le but des concepteurs d’UNIX était de disposer d'un système d'exploitation
interactif opérant sur des petits systèmes, mais dont la puissance est comparable au
systèmes d'exploitation des grandes machines.
Sa conception a suivi les péripéties suivantes:
 Apparition de la première version sur DIGITAL PDP7 et PDP8 en 1969. Cette version a été
écrite en assembleur et fonctionne en mono utilisateur.
 Une nouvelle version opérationnelle sur le DIGITAL PDP11 en mode multiprogrammation
a été lancée toujours par THOMPSON et DENNIS en 1971.
 En 1973, réécriture d'UNIX en langage C, lui même développé par DENNIS RITCHIE dans
les bell loboratories, brisant la tradition qui associes l'assembleur à tout système
d'exploitation.
 Octroie par bell loboratories aux universités la licence d'utilisation d'UNIX pour des buts
académiques.
 Lancement en 1975 d'UNIX version 6, un produit non "bell loboratories".
 Extension de l'environnement multiutilisateurs et ajout des utilitaires de gestion de
ressources avec l'apparition de la version UNIX PWB (Programmers Work Bench) en 1976.
TAYARI Lassaad
Page 7
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
 En 1978, UNIX a été porté sur le VAX11 à partir de la version 7. De nouveaux utilitaires
sont apparus, ainsi que la possibilité de portabilité a été améliorée.
 1980, l'université californienne de BERKLEY sort la version UNIX BSD4.1 qui apporte des
améliorations sur la gestion de la mémoire virtuelle et des réseaux et introduit l'éditeur plein
écran vi.
 Introduction sur le marché en 1981 de la première version UNIX temps réel par la firme
MASCOMP.
 Lancement en 1982 par AT&T de l'UNIX version 7 et l'UNIX system III, conçu par AT&T.
 Lancement en 1983 par AT&T de l'UNIX system V avec amélioration de la gestion des
mémoires partagées.
 Toujours en 1983, apparition de la version dérivée d'UNIX conçue pour tourner sur des
micro-ordinateurs IBM AT ou compatibles: XENIX de MICROSOFT...etc.
 A partir de l'année 1991, UNIX a commencé à s'ajuster au temps réel notamment avec les
versions UNIX system V.4, VXWORKS de Wind River System et VRTX de Ready Systems.
 Concurrent Computer met sur le marché un nouvelle version d'UNIX, la RTU 6.0, utilisant
l'architecture RISC et conçue à partir du noyaux V.3 d'AT&T mais intégrant l'environnement
BERKLEY BSD 4.2.
II/ Généralité sur le système
II-1/ Définition du système UNIX.
UNIX est un ensemble de programmes qui servent de liaison entre un ordinateur et
son utilisateur. UNIX possède trois fonctions:

Il commande l'ordinateur: Le logiciel du système UNIX chargé de la commande
de l'ordinateur est appelé le noyau Kernel ou le SE. Son rôle est l'allocation des ressources
matérielles, la gestion de la mémoire, la gestion du système des fichiers et le contrôle de
l'accès à l'ordinateur.
TAYARI Lassaad
Page 8
ISET DE NABEUL
Cours de LINUX(UNIX)

Le Système UNIX
Il sert d'interprète utilisateur-ordinateur: Le logiciel du système UNIX de telle
liaison s'appelle le SHELL dont le rôle est de contrôler et d'interpréter les demandes des
utilisateurs et d'extraire de la mémoire des programmes associés afin de les exécuter.

Il offre
un ensemble d'outils de travail destinés à la communication
téléphonique, a la manipulation des fichiers, à la programmation et au développement de
nouveaux logiciels.
APPLICATION
SE (UNIX)
MATERIEL
II-2/ Caractéristiques d'UNIX.
 Un système d'usage général: L'utilisateur peut effectuer des travaux de toutes sortes
comme la programmation, le traitement de texte, la messagerie...
 Un système interactif: Il offre une interaction entre l'utilisateur et la machine.
 Un système de temps partagé ou un système multiutilisateur: C'est la technique de
partage avec d'autres utilisateurs tout en donnant l'impression à chaque utilisateur qu'il est
le seul maître a bord.
En effet, le système alloue à chaque travail soumis une tranche de temps pour l'exécution
d'une partie ou la totalité de ce travail. Grâce à la rapidité d'exécution du système, il paraît
fonctionner simultanément avec tous les utilisateurs.
 Un système multitâches: Il permet l'exécution de plusieurs programmes simultanément.
II-3/ Raison du succès UNIX.
 Un système portable: Ecrit en langage C, UNIX est supporté par une grande variété de
machines allant des micro-ordinateurs jusqu'aux grosses machines. Il présente donc un
avantage commercial énorme.
TAYARI Lassaad
Page 9
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
 Un système facilement adaptable aux situations particulières: Le code source d'UNIX, écrit
en langage évolué, est disponible.
 Un système simple d'utilisation et riche en fonctionnalités.
 Il existe deux sortes d'utilisateurs pour un système UNIX donné:
 L'administrateur du système: c'est un usager particulier qui a tous les droits, et qui
est responsable du bon état du système. Son nom est root .
 Les autres utilisateurs: C'est l'administrateur qui enregistre un nouvel usager. Les
usagers sont rassemblés en groupes. En général un groupe rassemble les personnes qui
travaillent sur un même sujet. Pour changer de groupe, il faut le demander a
l'administrateur.
II-4/ Structure du système UNIX.
Le noyau du système UNIX est un bloc qui contient une série de composantes qui
assurent la gestion des fichiers, la gestion des processus et la gestion de la mémoire.
APPLICATION
APPEL SYSTEME UNIX
SYSTEME DE GESTION DE
FICHIERS
BUFFERING
GESTION DE
MEMOIRE
GESTION DE
DRIVER DE PERIPHERIQUES
PROCESSUS
CONTROLE MATERIEL
MATERIEL
Structure du noyau UNIX
TAYARI Lassaad
Page 10
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
II-5/ Le SHELL.
Pour travailler avec UNIX, il est important de savoir qu'il est possible de
communiquer directement avec le noyau de SE. Cette communication passe par un utilitaire
qui sert d'intermédiaire entre la saisie des commandes et le noyau du système. Sous UNIX, il
est appelé le SHELL (en français, la coquille ou interpréteur de commande).
On trouve plusieurs SHELLS tel que: C-SHELL, KORN-SHELL et BOURNE-SHELL).
II-6/ Premier contact avec UNIX.
 Ouverture d'une session UNIX
Login : nom de l'utilisateur
Password : mot de passe 
$ c'est le prompt utilisateur, il indique que le système est recevoir des commandes.
 Changer le mot de passe
$passwd
permet de créer ou changer le mot de passe
$passwd 
Setting password for user :userx
old password
: saisie de l'ancien mot de passe
new password
: saisie du nouveau mot de passe
Re-enter new password : validation du nouveau mot de passe.
 Afficher l'heure et la date
$date
Mon
TAYARI Lassaad
Sept
22
09:13:21
Page 11
EET
2006
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
 Afficher les utilisateurs, leurs adresses et l'heure et la date de la connexion
$
$who
adm
tty11
May
28
13:59
user1
tty12
May
28
15:12
user2
tty13
May
28
15:13
user7
tty18
May
28
16:40
tty13
May
28
15:13
$
$
$who am i
user2
$
 Fermeture d'une session:
Deux possibilités
 Avec la commande exit.
 En appuyant sur ^d (ou contrôle d ).
 Syntaxe de la commande:
Une commande UNIX doit posséder la syntaxe suivante:
$ Commande [option1].......[optionN]
[arg1] -------[argn]
( ce qui est entre crochets n'est pas toujours obligatoire)
TAYARI Lassaad
Page 12
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
Exemple:
$wc
fich1
44 446
3028
$wc -l
fich1
fich1
44 fich1
$wc -c
fich1
3028
fich1
$wc -w
fich1
446 fich1
$ uname
[-option]
-s
:
nom du système UNIX courant.
-n
:
nom du noeud.
-r
:
N° de l'édition du système UNIX.
-m
:
nom de la machine.
-v
:
version du système UNIX.
-a
:
toutes les données sous-mentionnées.
 Affichage des premières et dernières lignes d'un fichier:
$head
-5
fich1
$tail
-3
fich1
 Documentation:
La commande man permet de consulter la documentation on-line d'UNIX:
$man ls
TAYARI Lassaad
Page 13
ISET DE NABEUL
Cours de LINUX(UNIX)
Le Système UNIX
$man pg
TAYARI Lassaad
Page 14
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
Chapitre 2
LE SYSTEME DE FICHIERS D'UNIX
Objectifs:
 Connaître la structure du système de fichiers d'UNIX.
 Manipuler les commandes de base du système de fichier d’UNIX.
Prérequis:
 Les chapitres précédents de ce cours d’UNIX.
Plan
I/ Structure du système de fichier
I-1/ les fichiers normaux
I-2/ les fichiers répertoires
I-3/ les fichiers spéciaux
II/ Répertoire de travail
III/ La manipulation des répertoires
III-1/création d'un répertoire
III-2/ contenu d'un répertoire
III-3/ suppression d'un répertoire
III-4/ taille des répertoires
IV/ La manipulation des fichiers
IV-1/ création simple d'un fichier répertoire
IV-2/ lecture d'un fichier
IV-3/ duplication de fichiers
IV-4/ déplacement de fichiers
IV-5/ suppression de fichiers
IV-6/ autres opérations sur les fichiers
V/ Conclusion
TAYARI Lassaad
Page 15
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
Chapitre 2
LE SYSTEME DE FICHIERS D'UNIX
I/ Structure du système de fichier
Définition:
Un fichier est une suite d'octets, stockées sur une mémoire auxiliaire. Le système UNIX
distingue plusieurs types de fichiers.
 les fichiers normaux (ordinary files)
 les fichiers répertoires (répertoire ou directory)
 les fichiers spéciaux (special files ou devices)
Chaque fichier possède un nom, un contenu, un endroit où se trouve, sont
propriétaire, sa taille et les personnes qui peuvent y accéder.
I-1/ les fichiers normaux : contiennent soit des textes soit des programmes
exécutables .
I-2/ les fichiers répertoires: permettent d'organiser l'espace du disque dur. Les
fichiers normaux sont regroupés dans des répertoires. Ces répertoires peuvent contenir euxmêmes des sous-répertoires, des fichiers normaux et des fichiers spéciaux.
I-3/ les fichiers spéciaux : représentent les interfaces avec les périphériques gérés par
le système d'exploitation. Exemple: console, imprimante et disque.
/
/boot
/UNIX
/bin
mail
TAYARI Lassaad
/dev
news
/etc
usern
Page 16
/Lib
User3
/tmp
/usr
User2
ISET DE NABEUL
User1
Cours
de LINUX(UNIX)
Le système de fichier d'unix
/boot : Premier programme exécuté par la machine, il permet de lancer UNIX.
/UNIX : Programme du KERNEL (résident en mémoire). Au fonctionnement, /UNIX est lu,
copié dans la mémoire et exécuté.
/bin : Contient les utilitaires et programmes exécutables comme cat, date, wc, who, ...
/dev : Contient les fichiers spéciaux qui représentent des périphériques comme console,
ttyxx, lp, ...
/etc : Contient des programmes et fichiers de données pour l'administration du système
comme le fichier des mots de passe "passwd" et le fichier des membres de chaque groupe
d'utilisateur group.
/Lib : Bibliothèque de programmes et de langages.
/tmp : contient des fichiers temporaires
/usr : /news : Nouveautés dans le domaine d'UNIX
/mail : Boite à lettres
/userx : Répertoire de l'utilisateur userx.
II/ Répertoire de travail
Au moment du login, l'utilisateur est placé sur un répertoire propre à lui, relié au répertoire
système /usr. On appelle ce répertoire, le répertoire de départ ou répertoire de connexion.
A partir de sont répertoire de départ, tout utilisateur peut créer ou modifier ses propres
fichiers et répertoires qui doivent êtres situés dans la partie inférieure de l'arborescence à
partir du répertoire de départ. L'utilisateur peut aussi remonter le système de fichiers
jusqu'à
la racine ou se positionner sur un répertoire issu de sont répertoire appelé
répertoire de travail ou répertoire courant. Chaque fichier ou répertoire est décrit par sont
chemin d'accès par rapport au répertoire courant ou par rapport à la raine.
Exemple de chemin d'accès:
TAYARI Lassaad
Page 17
ISET DE NABEUL
Cours
de LINUX(UNIX)
/usr/user2/fich1
Le système de fichier d'unix
: Chemin d'accès de fich1 par rapport à la racine.
fich1
: Chemin d'accès de fich1 par rapport au répertoire de connexion de user2.
/usr/spool
: Chemin d'accès du fichier spool par rapport à la racine.
Pour connaître le répertoire courant, ou le répertoire de travail, on dispose de la commande
pwd.
$pwd
Pour se déplacer dans l'arborescence et changer de répertoire, on utilise la commande cd
suivie du chemin d'accès du répertoire.
$Cd /usr
$pwd
$cd /usr/spool
$pwd
pour remonter d'un niveau dans l'arborescence:
$cd ..
$pwd
$cd userx
$pwd
III/ La manipulation des répertoires
III-1/création d'un répertoire
Pour créer un répertoire, on utilise la commande mkdir suivie du nom du répertoire
(ou des noms des répertoires) à créer
TAYARI Lassaad
Page 18
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
$mkdir trav
$mkdir temps pers
III-2/ contenu d'un répertoire
La commande ls permet de lister le contenu d'un répertoire en fichiers et sousrepertoire sans distinction
Exemple:
$ls
fich1
pers
temps
trav
virus
Pour distinguer entre les fichiers et les répertoires on utilise ls avec l'option -p. Dans ce cas
les répertoires serons terminés par /
Exemple:
$ls
fich1
pers/
temps/
trav/
virus
TAYARI Lassaad
Page 19
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
Pour obtenir une description plus détaillée du contenu du répertoire, on utilise ls
avec l'option -f.
$Ls -l
-rw-rw--
1
userx group 12 May
29
10:64 fich1
drwxrwxr-x
2
userx group 32 Jun
3
10:45 virus
La première colonne représente le mode du fichier:
si le premier caractère est
d : répertoire
-: fichier ordinaire
b,c,p: fichier spécial.
Les neufs (9) caractères du champs mode décrivent les permissions accordées à ces fichiers
et répertoires ( à voir ultérieurement). En suite, on obtient le nombre d'octets dans chaque
fichier et répertoire, la et l'heure de sa dernière modification et son nom.
$Ls -l /
Dans le cas d'un fichier spécial, le champ indiquant le nombre d'octets est remplacé par deux
paramètres, le numéro majeur et le numéro mineur. Le numéro majeur permet de codifier le
type du périphérique (exemple : 0 pour console, 1 pour les terminaux tty, 2 pour les disques
....etc.) tandis que le numéro mineur permet de différencier les périphériques de même type
par des chiffres distincts.
$Ls -l /dev
III-3/ suppression d'un répertoire
La suppression se fait par la commande rmdir:
Exemple:
TAYARI Lassaad
Page 20
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
$rmdir temp
$ls -p
La même tâche peut être faite avec la commande rm :
Exemple
$mkdir temp
$ls -l
$rm -r temp
$ls -l
III-4/ taille des répertoires
La commande du (disk usage) fournit la taille en espace disque occupée par les répertoires
et les sous-répertoires.
Sa syntaxe est :
$ du -option répertoire
les options peuvent êtres:
a: taille de chaque fichier des répertoires en question.
R: générer des messages pour les fichiers ou répertoires non lus
s: seules les tailles totales des répertoires sont données.
Par défaut, la taille de chaque répertoire et sous-répertoire seront données en blocs. La
commande du interprète chaque bloc de 1024 octets en deux blocs de 512 octets (par
exemple, un fichier ou répertoire de 500 octets est interprété comme 2 blocs).
Exemple
$du
1
TAYARI Lassaad
.pers
Page 21
ISET DE NABEUL
Cours
de LINUX(UNIX)
1
.trav
20
.tp
Le système de fichier d'unix
IV/ La manipulation des fichiers
IV-1/ création simple d'un fichier répertoire
Il est possible de créer un fichier ordinaire soit en utilisant un éditeur de texte comme
vi, soit en utilisant la commande cat et la redirection.
Exemple:
$ cat > nom du fichier
ligne1
ligne2
^d
Une fois la ligne est validée, tout ce qui sera saisie sera copié sur le fichier qui peut être
fermé et sauvegardé dans le répertoire indiqué en tapant ^d.
Exemple :
$ cat fich2
Ce fichier est composé de deux lignes
et sera sert à tester la commande cat.
^d
$ls -l
-rw-rw-r--
1 userx
group 12
May
29
10:45 fich1
-rw-rw-r--
1 userx
group 68
Jun
3
11:16 fich2
drwxrwxrwx 2 userx
group 32
Jun
3
10:15 temp
TAYARI Lassaad
Page 22
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
IV-2/ lecture d'un fichier
Il est possible de lire un fichier ordinaire soit en utilisant un éditeur de texte comme
vi, soit en utilisant la commande cat .
Exemple :
$cat fich1
$cat fich1 fich2
Dans le cas de fichiers volumineux, on remarque que le défilement sur l'écran est rapide.
Donc, il faut y avoir du temps de pause pour l'affichage. Pour cela on peut utiliser la
commande pg.
pg permet l'affichage de un ou plusieurs fichiers page par page.
$pg nom de fichier
pg attend des instructions supplémentaires qui peuvent être:
h: voir toutes les possibilités de pg
L: afficher la ligne suivante
<>: Afficher page suivante
.: afficher la page courante
f: afficher la page d'après
$: Afficher la dernière page
+iL: Afficher les i lignes suivantes
/chaine/ : Rechercher en avant d'une chaîne
?chaîne?: Rechercher en arrière d'une chaîne
Exemple:
TAYARI Lassaad
Page 23
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
$pg fich1
<texte>
:h
:L
:+3L
:.
:<>
:$
:q
$
$pg -5 +15 fich1 : affiche fich1 toutes les 5 lignes à partir de la 15 ème ligne.
IV-3/ duplication de fichiers
Pour dupliquer un fichier, il suffit d'utiliser la commande cp.
Syntaxe:
$cp source(s)
destination
source(s) = un ou plusieurs fichiers
Exemples:
1- copie de deux fichiers sur un autre répertoire en gardant les mêmes noms:
$cp
virus
fich2 trav
$ls trav
2- Duplication d'un fichier sur le même répertoire de travail avec un nom diffèrent:
$cp fich2
essai.
$ ls -p
TAYARI Lassaad
Page 24
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
$cat essai
3- Duplication d'un répertoire sur un autre:
$cd trav
$ls
$cp * /usr/userx/pers
ou
$ cp *
../pers
$ls ../pers
$cd ..
Question: Comment peut-on réaliser le dernier exemple sans changer de répertoire?
IV-4/ déplacement de fichiers
Pour déplacer un fichier, il suffit d'utiliser la commande mv (move).
Syntaxe:
$mv source(s) destination
Exemples:
1- Déplacement d'un fichier d'un répertoire a un autre sans changement de nom:
$mv essai trav/essai
$ls -l
$ls -l trav
2- Déplacement d'un fichier d'un répertoire a un autre avec changement de nom:
$mv trav/essai
essai1
$ls -l
$ls -l trav
TAYARI Lassaad
Page 25
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
Attention: Si le fichier de destination existe déjà, la commande mv remplacera son contenu
par celui du fichier source.
IV-5/ suppression de fichiers
Pour supprimer un fichier, on utilise la commande rm (rermove)
Syntaxe:
$rm [-option] fichier(s)
Exemples:
$rm trav/fich2 pers/fich2
$ls -p trav pers
L'utilisation de l'option i permet au système de poser une question de validation avant
d'effacer le fichier.
Exemples:
$rm -i pers/virus
pers/virus: ? n
$ls pers
$rm -i pers/virus
pers/virus: ? y
$ls pers
IV-6/ autres opérations sur les fichiers
La commande file permet de tester sur le contenu d'un fichier. Cette commande
permet de deviner le type de fichier invoqué.
Syntaxe:
TAYARI Lassaad
Page 26
ISET DE NABEUL
Cours
de LINUX(UNIX)
Le système de fichier d'unix
$file fichier
Exemples:
$file /bin
/bin : directory
$file /bin/ed
/bin/ed : cannot open for reading
$file essai1
essai1 : data
V/ Conclusion:
Dans ce chapitre nous avons étudié le système de fichier d'UNIX du point de vue de
l'utilisateur. En effet, nous avons défini les différents types de fichiers, la structure générale
du système de fichier (organisation hiérarchique des répertoires) et les commandes de base
pour la manipulation du système de fichier d'UNIX. Par contre, nous n'avons pas évoqué la
notion de sécurité qu'offre le système UNIX. Dans le chapitre suivant, on étudiera ce point.
TAYARI Lassaad
Page 27
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
Chapitre3
SECURITES DES FICHIERS
Objectif:
Connaître les différentes techniques de sécurité des fichiers sous UNIX
Prérequis:
 Les chapitres précédents de ce cours d’UNIX.
Plan
I/ INTRODUCTION:
II/ NOTIONS D’UTILISATEUR ET DE GROUPE :
III/ LES DROITS D’ACCES D’UN FICHIER:
IV/ CHANGEMENT DE DROIT D’ACCES :
V/ CHANGEMENT DE PROPRIETAIRE ET DE GROUPE
VI/ L’INODE:
TAYARI Lassaad
Page 25
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
Chapitre 3
SECURITES DES FICHIERS
I/ INTRODUCTION:
A chaque fichier est associé un ensemble de permissions qui octroient les droits
d’accès en lecture, en écriture ou en exécution au propriétaire lui- même, aux membres de
son groupe de travail ou au différents autres utilisateurs du système .
II/ NOTIONS D’UTILISATEUR ET DE GROUPE :
1) l’utilisateur :
Au login, l'utilisateur doit introduire sont identificateur, qui correspond d’un nombre
uid reconnu par le système.
2) le groupe:
Le groupe d’utilisateurs est l’ensemble d’utilisateurs qui peuvent partager les
memes fichiers, ou qui travaillent sur le même projet Chaque groupe est identifié par son
nom et par un identificateur unique, le gid.
Pour connaitre les groupes définis dans un système, on tape:
$ cat /etc/group
root::0:root ,adm
sys::3:root,adm
group::50:user1,user2,user3,user4
On obtient donc une liste des groupes dans le système. Chaque nom de groupe est suivi par
un champ libre, son gid et enfin l’ensemble des membres (utilisateurs) du groupe.
TAYARI Lassaad
Page 26
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
3) Connaitre les utilisateurs et les groupes :
le fichier / etc / passwd,qui est le fichier des mots de passe, il contient toute
les informations du login pour chaque utilisateur. Ce fichier ne peut etre modifié que par le
super-utilisateur, mais peut etre consulté par les autres avec la commande :
$ cat / etc/ passwd |pg
les entiées de se fichier sont de la forme :
log-id : mp : uid : gid: comm: rep-conn: prog -conn:
log_id:= identificateur de lutilisateur
mp= mot de passe
uid: user identifier
gid: group identifier
comm: facultatif ( reservé pour les commentaires )
rep_con : repertoire de connexion
prog_conn: le shell
Exemple:
$ cat /etc /passwd
root: * : 0: 1: superuser:/:
bin : *: 2: 2: owner of systeme commandes: / bin:
sys :*: 3:3: owner of systeme files :/usr/sys
user1 : * : 208 : 50 :: / usr/ user1: / bin /sh
user2 : * : 209 : 50 :: / usr / user2:/ bin /sh
la commande id permet a l’utilisateur d’afficher son login et son groupe aussi
que les uid et gid
TAYARI Lassaad
Page 27
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
III/ LES DROITS D’ACCES D’UN FICHIER:
Les droit d’acces d’un fichier forment un ensemble de trois groupes de troix caracteres
chacun :
$ ls -l
-rwx rwx rwx . . . . . . . . . . . . . . . . . . . fichier
Autres
Propriétair
e
Groupe
La signification des mentions de ses groupes diffère selon q’il s'agit d’un fichier
ordinaire, d’un fichier spécial ou d’un fichier répertoire
 Pour un fichier ordinaire :
r: droit d’accès en lecture
w: droit d’accès en écriture
x: droit d’exécution si le fichier est exécutable.
 Pour un répertoire :
r: droit de lecture du contenu (ls)
w: droit de créer / supprimer des fichiers (cp,mv)
x: droit d’opérer dans le répertoire (cd)
Exemples :
$ ls -l / etc/ passwd
-rw-r--r-- root sys ...... /etc/passwd
$ ls -l /bin/ ls
-rwx--x--x ....... /bin/ls .
TAYARI Lassaad
Page 28
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
IV/ CHANGEMENT DE DROIT D’ACCES :
A la création d’un fichier ou répertoire, c’est le système ( kernel) qui se charge
d’accorder ou de refuser la permission au propriétaire, aux membres du groupe et au
autres. Ses permissions peuvent être modifiées avec la commande chmod.
Seul le propriétaire d’un fichier ou d’un répertoire peut changer les permissions. En effet, il
peut décider qui sera autorisé à lire, modifier, créer, supprimer et utiliser ses fichiers et
répertoires, et à qui cela sera interdit.
Le changement des droits d’accès peut se faire en deux modes :
 En symbolique
ou
 En absolu
 notion symbolique :
la syntaxe de la commande chmod est :
$chmod sujet [operateur ] [ permission] fichier(s).
Ou
sujet : u
: utilisateur et propriétaire.
:g
: membre du groupe de l’utilisateur.
:o
: autres utilisateurs du système.
:a
: tout le monde .
operateur
:+
: ajouter des droits
:-
: enlever les droits
:=
: valider les droits cités dans la commande et
enlever les autres.
permission
:r
: lecture (fichier)
: affichage (répertoire )
TAYARI Lassaad
Page 29
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
:w
: écriture (fichier)
: création ou suppression (répertoires )
:x
: exécution (fichier )
: droit d’opérer ( répertoire ) .
Exemples:
1- Lister les droits d’accès du fichier virus .
$ ls -l virus
-rw-r--r--
1 userx group ........ virus.
2- Ajouter le droit d’exécution au propriétaire et interdire les nom_ membre du groupe d’y
accéder :
$ chmod a+ x, o-r virus
$ ls -l virus
-rwx-----
1 userx group ............. virus
3- Enlever le droit du propriétaire à la lecture, et ne permettre au groupe et aux autres que
l’execution :
$chmod u-r , g=x , o+x
$ ls -l
virus
virus
--wx--x--x
1 userx groupe . . . . . . virus
4- lire le fichier virus
$ cat virus
cat : cannot open virus [ ou access denied virus ]
5- remettre le fichier a l’état initial :
$ chmod u= rw , go= r
TAYARI Lassaad
virus.
Page 30
ISET DE NABEUL
Cours
de LINUX(UNIX)
$ ls -l
Sécurité des fichiers
virus
-rw-r--r--
1 userx group ....... virus
$ cat virus ( taper entrer )
 notion absolue:
syntaxe:
$ chmod
mode
fichier(s)
mode : est la représentation octale des permission :
- le chiffre 1 correspond au mention r,w ou x
- le chiffre 0 correspond au tiret Exemple:
Permission
rwx
rw-
111
110
r-100
correspond le mode 764
1- obtenir les droit d’accès suivants pour le fichier virus:
rw--w--w$ chmod 622 virus.
$ ls -l virus
-rw--w--w- ............ virus
2- protéger le fichier contre toute écriture
$ chmod a -w virus
$ ls -l virus
TAYARI Lassaad
Page 31
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
-r--r--r- ............... virus
$ cat > virus
virus: can not create .
3- remettre les droites d’accès de se ficher et l’état initiale :
$ chmod 644 virus
$ ls -l virus
-rw-r--r-- .......... virus
V/ CHANGEMENT DE PROPRIETAIRE ET DE GROUPE
1) changement de propriétaire :
Sous Unix le propriétaire a tout les droits sur ses fichiers. En effet, il a le droit de
transférer la propriété d’un fichier ou d’un répertoire vers un autre utilisateur. Pour se faire
il doit utiliser la commande chown (change owner)
attention !!:le changement de propriétaire fait perdre a celui -ci tout droit d’accès sur se
fichier, même celui de restaurer la propriété, sauf les droits permis pour les autres.
Syntaxe de chown:
$ chown nouveaux _ login -id
fichier(s) (ou répertoire (s))
ou
$ chown nouveau-ind fichier (s) (ou répertoire (s)).
Exemple :
1- changement de propriété du fichier essai1:
$ ls -l essai1
-rw--r--r--
1 userx
group ........ essai1
$ chown admn essai1
TAYARI Lassaad
Page 32
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
$ ls -l essai1
-rw-r--r--
1 admn group ......... essai
2- remettre le fichier à l’état initial.
$ chown userx essai1 .
essai1 : not owner .
Donc, la propriété ne peut être restaurée que par le nouveau propriétaire. Cette
opération se fait a l’aide de l’approche suivante :
$ chown usrx /usr/userx/essai 1
2) changement de groupe:
Un utilisateur peut choisir pour une de ses fichiers ou répertoires un groupe autre que
celui assigné normalement par le kernel. Cette procédure est réalisable par la commande
chgrp.(change groupe).
La syntaxe de la commande chgrp est:
$ chgrp nouveau_groupe fichiers () (ou répertoire (s))
ou
$ chgrp nouveau_gid fichier(s) (ou répertoire (s) )
Exemple :
1-
changer le groupe du fichier essai1:
$ ls -l essai1
-rw-r--r-- 1 userx group .......essai1
$ chgrp sys essai1
$ ls -l essai1
-rw-r--r--
1
userx
sys ....... essai1
Les membres du groupe de travail de userx n’ont plus que le droit de lecture.
TAYARI Lassaad
Page 33
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
2- Pour restaurer le groupe d’origine:
$ chgrp group essai1
$ chgrp group essai1
-rw-r--r-- 1
userx
group .........essai1
Remarque : manipuler les répertoires de la même manière.
VI/ L’INODE:
Un fichier possède plusieurs informations, tel que le nom, le contenu et d’autres
informations comme les permissions et les dates des derniers modifications. ces
informations sont sauvegardées dans l’INODE (index mode) avec d’autres données
essentielles comme la longueur du fichier, sont emplacement sur le disque ,...etc.
1) Représentation de l'INODE :
TAYARI Lassaad
Page 34
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
L’INODE est une suite de 64 octets qui définit les caractéristiques d’un fichier (type,
permission, adresse des données ). Toutes les INODES sont regroupées en une liste.
L’importance des inodes réside dans le fait qu'il sont pour le système comme le nom pour
l’utilisateur.
$ ls -i
8643 fich1
6286 fich2
$
le i-num d’un fichier est enregistré dans les deux premiers octets du repertoire, et est
l’unique
connexion entre le nom du fichier et sont contenu.
2) lien d’un fichier :
Le nom du fichier dans le répertoire servant de lien entre un nom dans la hiérarchie
d’un répertoire et l’inode est appelé le lieu. Le même i-num peut apparaitre dans des
répertoires différents avec des nom de fichiers différents grâce a la commande ln:
syntaxe:
$ ln fichier_ ancien fichier_ nouveau.
Le but de cette opération de donner deux noms au même fichier.
$ ls -li bidon
6231 -rw-rw-rw 1 ....... bidon
$ ln bidon
/work/bidonne
$ ls -li bidon
6231 -rw-rw-rw 2 ........ bidon
$ ls -li bidonne
TAYARI Lassaad
Page 35
ISET DE NABEUL
Cours
de LINUX(UNIX)
Sécurité des fichiers
6231 -rw-rw-rw 2
/work / bidone
nombre de liens .
Les deux fichiers pointent donc surs le même inode, ce qui veut dire qu’il ya un seul
espace disque associé aux deux noms de fichiers.
$ mv bidon bidon0
$ ls -li bidon0
6231 -rw-rw-rw 2 ..... bidon0
$ rm bidon0
$ ls -li bidon work/bidone
bidon not fownd
6231 -rw-rw-rw
1
work/bidonne
REMARQUE:
la commande rm n’élimine pas l’inode, mais élimine le nom du fichier dans le répertoire
tout en décrémentant le nombre de liens par 1, les données restent intactes sur le disque.
TAYARI Lassaad
Page 36
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
Chapitre 4
UTILISATION DU SHELL D'UNIX
Objectifs:
 Connaître la structure de la ligne de commande dans le SHELL d'UNIX.
 Manipuler les méta caractères du SHELL d’UNIX.
 Introduire la notion de la programmation dans le SHELL d’UNIX.
Prérequis:
 Les chapitres précédents de ce cours d’UNIX.
Plan
I/ La structure de la ligne de commande
I-1/ La forme canonique
I-2/ L'association de plusieurs commandes sur la même ligne
I-3/ Lancement d'une commande en arrière plan
I-4/ La redirection
I-5/ Le tube
II/ Les méta caractères
III/ La programmation dans le SHELL
III-1/ types de variables SHELL
III-2/ Evaluation des expression arithmétiques
III-3/ Les arguments résultats de commandes
III-4/ La création de nouvelles commandes
III-5/ Affectation de variables en interactif
III-6/ Les commandes avec arguments
TAYARI Lassaad
Page 35
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
Chapitre 4
UTILISATION DU SHELL D'UNIX
I/ La structure de la ligne de commande:
Lorsqu'une commande est lancée par le SHELL, trois fichiers ayant chacun un numéro
appelé "file discriptor (fd) " sont ouverts par le système. Ce sont:
 Le fichier stdin ou standard input (fd=0)
 Le fichier stdout ou standard output (fd=1)
 Le fichier stderr ou standard error (fd=2)
I-1/ La forme canonique.
La commande la plus simple est un mot qui fait appel à un fichier de même nom:
Exemple:
$ who
$ date
I-2/ L'association de plusieurs commandes sur la même ligne.
Plusieurs commandes peuvent êtres lancés sur la ligne si elles sont séparées par un
point virgule ";".
Exemple:
$ date ; who
I-3/ Lancement d'une commande en arrière plan.
TAYARI Lassaad
Page 36
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
l est possible de profiter de la caractéristique multitâche d'UNIX pour avoir plusieurs
commandes qui tournent en même temps et qui proviennent du même utilisateur. Ceci est
accompli en faisant exécuter des commandes en arrière plan a l'aide du caractère &.
Exemple:
$sleep
$
5
(Attende 5 secondes pour donner la main)
(Le prompt reçue après 5 secondes )
$(sleep 5 ; date )& date
2108
(l'identificateur du processus)
Mon Sept 22 09:13:21 1997
Mon Sept 22 09:13:26 1997
L'avant dernière ligne est le résultat de deuxième commande date, alors que la
dernière ligne est celui de la première commande date. On remarque le décalage de 5
secondes dans l'heure.
Si le résultat d'une commande lancée en arrière plan n'est pas affichable sur l'écran, la fin du
processus n'est pas indiquée par le SHELL. Dans ce cas, il est conseillé de terminer la
commande par un message.
Exemple:
$(ls -l >liste;sleep 10; echo "fini")&
21554
$fini
Le mot fini est affiché 10 secondes après l'écriture sur liste. L'exemple d'utilisation le plus
courant est l'écriture sur l'imprimante.
Chaque tâche lancée en arrière-plan est identifiée par un numéro appelé identificateur de
processus (process identifier) ou PID.
Les état de ces tâches peuvent êtres consultés sur l'écran grâce à la commande:
TAYARI Lassaad
Page 37
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
$ ps -f.
Les informations obtenues sont:
 Le nom de l'utilisateur qui a lancé la commande,
 le numéro du PID de chaque processus,
 le numéro du PID du processus père,
 l'heure du début du processus,
 la durée du processus
 la commande de lancement
Exemple:
$sleep 50&
22472
$ps -f
UID
PID
PPID
C
STIME TTYTIME
COMMAND
userx
21579
21578 3
14:03:16
P00 0:03
-sh
usery
22472
21579 0
14:26:07
P00 0:00
sleep 50
userz
22473
21579 16
14:26:10
P00 0:01
ps -f
Connaissant le numéro de la tâche ou son PID, il est possible d'arrêter son exécution.
Pour ce faire, il suffit d'envoyer le signal 9 a la tâche désirée à l'aide de la commande kill.
Exemple:
$Kill -9 22472
(tuer la tâche 22472)
22472 terminated
$ps -f
TAYARI Lassaad
Page 38
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
UID
PID
PPID
C
STIME TTYTIME
COMMAND
userx
21579
21578 3
14:03:16
P00 0:03
-sh
userz
22473
21579 16
14:26:10
P00 0:0±
ps -f
On remarque que le processus (sleep 50) qui avait le PID 22472 à disparu de la liste des
processus.
I-4/ La redirection.
Toute commande d'UNIX suppose l'existence d'un flux de données en entrée qui
provient généralement du clavier et un flux de données en sortie qui est généralement
affiché sur l'écran. Le clavier est donc considéré comme entrée standard (stdin) et l'écran est
considéré comme la sortie standard (stdout).
Toute fois, le SHELL permet à l'utilisateur de :
 Rediriger ses résultats vers un fichier
Accepter les données à partir d'un fichier.
Les données résultat d'une commande peuvent êtres dirigées vers un fichier au lieu
de l'écran en utilisant le caractère ">" si le fichier est nouveau et le caractère ">>" si les
données seront ajoutées en fin de fichier.
Les syntaxes sont les suivantes:
$commande >
fichier
où
$commande >> fichier
Exemples:
$
$echo toto >temp
$cat temp
TAYARI Lassaad
Page 39
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
toto
$echo lolo >>temp
$cat temp
toto
lolo
I-5/ Le tube (pipe).
C'est un moyen qui permet le simplification de l'exécution de plusieurs commandes
quand chaque commande doit prendre comme entrée la sortie de la commande qui la
précède.
Exemple:
$who > f_temp

$wc < f_temp
$who | wc
En général, la séquence de redirection suivante:
$commande1
>
fichier_temp
$commande2
<
fichier_temp
|
commande2
est remplacée par:
$commande1
Les données résultat de la commande1 sont les données entrée de la commande2.
Exercice: ( a corriger en classe par les étudiants)
TAYARI Lassaad
Page 40
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
Décomposez et interprétez les commandes suivantes:
$ls -l | wc -l
$ls -l | head -6 | tail -1
$ls -l | tail -8 | tail -2
II/ Les méta caractères
Le SHELL possède un ensemble de caractères spéciaux appelés méta artères:
 Le méta caractère astéries (*) remplace n'importe quelle séquence de caractères:
$echo *

ls
$echo fich.*

ls fich.*
 Le méta caractère point d'interrogation (?) remplace un seul caractère.
Exemple:
$ls *.?
Permet de lister que les fichiers dont les extensions se composent d'un seul caractère.
 Le méta caractère crochet ([...]) remplace un des caractères contenus entre crochet.
 Le méta caractère crochet ([^...]) remplace un des caractères non contenus entre crochet.
Exemples:
$ls essai[0-9]
affiche fichiers ayant le nom "essai" et qui se termine par un chiffre (essai1, esaai2,...etc)
$ls essai[!5,7]
affiche fichiers ayant le nom "essai" et qui ne se termine pas par 5 ou 7.
L'interprétation spéciale des méta caractères par le SHELL est annulée soit en les faisant
précédé par l'antislash "\", ou en les mettant entre guillemets.
TAYARI Lassaad
Page 41
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
III/ La programmation dans le SHELL
L'un des rôles les plus importants du SHELL est la programmation a de créer de
nouvelles procédures et commandes.
Le SHELL utilise les variables pour mémoriser et traiter les données.
III-1/ types de variables SHELL.
Deux (2) types de variables sont traités par le SHELL:
 les entiers
 les chaînes de caractères.
Le type de variable est implicitement reconnu par le SHELL.
Exemple:
$var1=167
:var1 est un entier
$var2=suite
:var2 est une chaîne de caractères.
 La valeur d'une chaîne de caractères doit être incluse entre guillemets si elle comprend
des espaces, des tabulations ou des point-virgules.
 Le caractère $ doit toujours précéder le nom de la variable, sauf au moment de la
déclaration de cette variable.
Une variable peut être assignée à une autre variable:
Exemple:
$ch2=$ch1 (Attention, ici le premier dollar ($) est le prompt d'UNIX)
Exercice:
Ecrire l'instruction qui permet d'obtenir la réponse suivante du système:
TAYARI Lassaad
Page 42
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
ch1=première chaîne et ch2= deuxième chaîne
III-2/ Evaluation des expression arithmétiques.
La commande expr ordonne au chell d'évaluer une expression arithmétique qui peut
être composée de variables entières seulement, de constantes entières seulement ou d'une
combinaison des deux.
Les opérations arithmétiques permises sont:
et
 L'addition
+
 la soustraction
-
 l multiplication
\*
 la division
/
 le reste de la division euclidienne %
Les termes de l'expression doivent être séparés par des blancs.
Exemples:
$
$var1=15
$var2=5
$X1= ` expr $var1 + 1 `
$echo $X1
16
$expr $var1 - $var2
10
TAYARI Lassaad
Page 43
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
$X2=` expr $var1 / $var2 `
$echo $X2
3
$X2=` expr $var1 % $var2 `
$echo $X2
0
$
III-3/ Les arguments résultats de commandes.
Le résultat d'une commande peut servir comme argument à une autre commande.
Dans ce cas, la commande argument doit être à l'intérieur des apostrophes.
Exemple:
$mail ` cat work/agenda ` < essai1
permet d'envoyer le fichier essai1 à tous les utilisateurs déclarés dans le fichier agenda.
Le résultat d'une commande peut aussi être stocké dans une variable et utilisé
ultérieurement.
Exemple:
$date
Fri Sep
7
10:7:26
EET 1997
$heure=`date`
$echo $heure
Fri Sept
7
TAYARI Lassaad
10:7:45
EET 1997
Page 44
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
Le résultat paramétré, c'est à dire subdivisé en plusieurs champs par la commande set. Ces
champs seront représentés par les paramètres $1, $2, ........., $N
Exemple:
$
$set `date `
$echo $1
Fri
$echo $5
EET
$echo $6
1997
$
III-4/ La création de nouvelles commandes.
Soit le traitement suivant:
$
$cat > cmd1
echo la date est `date `
^d
$cat cmd1
echo la date est `date `
$
TAYARI Lassaad
Page 45
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
Cette nouvelle commande est lancée en utilisant le fichier comme argument de la
redirection en entrée pour le SHELL. La forme générale est:
sh < commande
ou
sh commande
Exemple:
$
$sh cmd1
la date est Fri Sept
7
10:15:45
EET 1997
$
L'exécution du fichier des commandes peut être simplifier en invoquant seulement
son nom. Seulement, l'utilisateur doit posséder de droit d'accès en exécution sur ce fichier.
L'exemple suivant montre comment on peut combiner plusieurs commandes utiles pour ne
former qu'une seule.
$
$Vi etat
echo " salut,
la date est ` date `
les utilisateurs sont ` who `
mon répertoire est ` pwd ` "
TAYARI Lassaad
Page 46
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
:wq
$sh etat
salut,
la date est Fri Sept
7
les utilisateurs sont
10:15:45
root
user2
EET 1997
tty00
tty02
09:12:44
10:11:08
mon répertoire de travail est /usr/user2
$
III-5/ Affectation de variables en interactif.
La commande read permet l'interaction de l'utilisateur avec le système.
Exemple:
$
$ cat > menu
echo "Quel est votre choix 1, 2 ou 3 ?"
read choix
echo "vous avez choisis $choix"
^d
$sh menu
Quel votre choix 1, 2 ou 3 ?2
vous avez choisis 2
TAYARI Lassaad
Page 47
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
$
III-6/ Les commandes avec arguments.
Pour généraliser l'utilisation d'une commande récemment créer il est possible de la
paramétrer. Les arguments de la commande sont indiqués par les paramètres $1, $2, $3,
.....,$9 dans le fichier.
Exemple:
$
$cat > cx
chmod u+x $1
echo permission execute accordée.
^D
$
L'étape suivante consiste à rendre la commande cx elle même exécutable:
$
$cx cx
cx : execute permission dinied
$sh cx cx
permission execute accordée.
$
Une fois que le fichier ( ou la commande ) cx est rendu exécutable, il peut être utilisé avec de
nouveaux arguments sans passer par sh.
TAYARI Lassaad
Page 48
ISET DE NABEUL
Cours
Utilisation Du SHELL
d’UNIX &C
Exemple:
$
$ ls -l menu
-rw-r--r--
1
user1 group .........
menu
$cx menu
permission execute accordée.
$ ls -l menu
-rwxr--r-- 1
user1 group .........
menu
$
Exercice:
Modifiez la commande cx pour qu'elle puisse accepter plusieurs arguments en une seule
fois.
TAYARI Lassaad
Page 49
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Chapitre 5
PROGRAMMATION STRUCTUREE DANS LE
SHELL
Objectifs:
 Etudier les opérations de tests dans le shell d’UNIX.
 Etudier les structures de contrôle dans le shell d’UNIX.
 Etudier les structures de répétition dans le shell d’UNIX.
Prérequis:
 Les chapitres précédents de ce cours d’UNIX.
Plan
I/TRANSMISSION DE PARAMETRES:
II/GESTION DES SIGNAUX ET PROCESSUS:
III/LES TESTS DANS LE SHELL D’UNIX:
III-1/ Tests sur les caractéristiques des fichiers.
III-2/ Tests de comparaison de fichiers.
III-3/ Tests sur les valeurs numériques.
III-4/ Tests sur les chaînes de caractères.
IV/ LES CONDITIONS COMPOSEES:
V/ LES STRUCTURES CONDITIONNELLES:
V-1/ La structure if-then-else-fi.
V-2/ La structure case-in-esac.
VI/ LES BOUCLES:
VI-1/ La construction for-in-do-done.
VI-2/ La construction while-do-done.
VI-3/ La construction until-do-done.
VI-4/ Sortie d’une boucle. (Break)
VI-5/ Saut vers la fin d’une boucle.(continue)
VI-6/ La récursivité.²
TAYARI Lassaad
Page 46
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Chapitre 5
PROGRAMMATION STRUCTUREE DANS LE
SHELL
I/TRANSMISSION DE PARAMETRES:
Une commande SHELL peut travailler avec des arguments qui lui sont transmis lors de
son appel via la ligne de commande:
$commande param1 param2 ....... paramN
Les paramètres de la commande sont référencés par/
$0
Nom de la commande
$1
Premier paramètre
$2
Deuxième paramètre
$N
N
$#
Nombre de paramètres
$*
Tous les paramètres
$$
PID de processus
ième
paramètre
II/GESTION DES SIGNAUX ET PROCESSUS:
Durant l’exécution d’un processus, certains signaux concernant ce processus peuvent
apparaître:
Signal 0
Sortie du SHELL
Signal 1
Déconnexion de terminal
TAYARI Lassaad
Page 47
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Signal 2
Interruption
Signal 3
Quit
Signal 9
Meurtre du processus
Signal 15
Fin normal du processus
A l’aide de la commande trap, l’utilisateur peut programmer exécution d’un traitement
spécifique lorsque survient un signal.
La syntaxe de la commande trap est:
$trap `commande(s)` signal 
Exemple:
 Programmation de l’interruption à l’émission de ^T par l’utilisateur/
$stty intr ^T
 Programmation d’un programme utilisateur d’un trap qui tue le processus en cours suit à
l’émission d’une interruption.
$trap `kill -9 $$` 2
 Arrêter le processus en cours exécuter les deux commandes suivantes.
$ trap `ls -l ; date ` 2
 Inhibition de l’interruption:
$trap `` 2
III/LES TESTS DANS LE SHELL D’UNIX:
A la fin de l'exécution d’une commande, un code de sortie (dénoté par ?) est
positionné. Si la commande s’est bien exécutée (vrai), le code prend la valeur 0 (zéro), sinon
(faux), il est différent de 0 (zéro).
TAYARI Lassaad
Page 48
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Exemple:
$ls -l
(commande juste)
$echo $?
0
(execution OK)
$ls -k
(commande fausse)
$echo $?
2
(exécution erronée)
UNIX propose une procédure de TEST pour programmer une condition.
Quatre types de test sont disponibles:
 tests sur les caractéristiques des fichiers
 tests de comparaison de fichiers
 tests sur les valeurs numériques
 tests sur les chaînes de caractères alphanumériques.
III-1/ Tests sur les caractéristiques des fichiers.
La syntaxe de base est:
$test -option fichier
où
[ -option
fichier ]
Les différentes possibilités sont:
test
-f
TAYARI Lassaad
fichier : Vrai si fichier ordinaire
Page 49
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
test
-d
fichier : Vrai si fichier répertoire
test
-r
fichier : Vrai si fichier est accessible en lecture
test
-w
fichier : Vrai si fichier est accessible en écriture.
test
-x
fichier : Vrai si fichier est exécutable.
test
-c
fichier : Vrai si fichier spécial (mode caractère)
test
-b
fichier : Vrai si fichier spécial (mode bloc)
test
-s
fichier : Vrai si fichier non nul
Exemple:
$test -r fichier
où [ -r fichier ]
$echo $?
0
III-2/ Tests de comparaison de fichiers.
La syntaxe est:
test fichier1 opérateur fichier2
où
[ fichier1 opérateur fichier2 ]
trois possibilités existent:
test
fichier1
-ef
fichier2
: Vrai si les deux fichiers sont liés
test
fichier1
-nt
fichier2
: Vrai si fichier1 est plus récent
test
fichier1
-ot
fichier2
: Vrai si fichier2 est plus récent
Attention ses trois tests ne sont pas disponibles sur toutes les versions d'UNIX.
TAYARI Lassaad
Page 50
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
III-3/ Tests sur les valeurs numériques.
La syntaxe est :
test valeur1 opérateur valeur2
où
[ valeur1
opérateur valeur2 ]
Les différentes possibilités sont:
test
val1
-eq
val2
:Vrai si val1=val2
test
val1
-ne
val2
:Vrai si val1val2
test
val1
-gt
val2
:Vrai si val1>val2
test
val1
-ge
val2
:Vrai si val1val2
test
val1
-lt
val2
:Vrai si val1<val2
test
val1
-le
val2
:Vrai si val1val2
III-4/ Tests sur les chaînes de caractères.
Deux types de syntaxes sont possibles:
où
test
option
test
"chaine1"
" chaîne "
opérateur
"chaine2"
Les opérateurs possibles sont:
test
-z
"ch1" : Vrai si la longueur de ch1 est nulle
test
-n
"ch1"
test
"ch1" =
"ch2" : Vrai si ch1 et ch2 sont identiques
test
"ch1" !=
"ch2" : Vrai si ch1 et ch2 sont différentes
test
"ch1"
TAYARI Lassaad
: Vrai la longueur de ch1 est non nulle
: Vrai si ch1 est non nulle.
Page 51
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Exemples:
$a="ch1"
$b="ch2"
$test "$a"
=
"$b"
$echo $?
1
$test "$a"
!=
"$b"
$echo $?
0
IV/ LES CONDITIONS COMPOSEES:
Les opérateurs suivants peuvent êtres utilisés pour former des conditions
composées:
!
: La négation
-a
: Le ET binaire
-o
: Le OU binaire
La condition composée doit être représentée de la manière suivante:
\(condition\)
Exemples:
test ! -r fichier

[ ! -r fichier ]
est vrai si fichier n'est pas autorisé en lecture
test \( -w fichier1 -a ! -x fichier2 \)
vrai si fichier1 est autorisé en écriture et fichier2 n'est pas exécutable.
TAYARI Lassaad
Page 52
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
V/ LES STRUCTURES CONDITIONNELLES:
Le SHELL est un langage de programmation. En effet, il supporte les variables, les
structures conditionnelles et les boucles:
V-1/ La structure if-then-else-fi.
Le schéma de base de cette structure est le suivant:
if liste_de_commandes
then liste_de_commandes
else liste_de_commandes
fi
si l'exécution de la première liste de commandes s'est bien déroulée, alors la
deuxième liste sera exécutée, sinon la troisième sera exécutée.
Remarques:
 La partie else est facultative
 Si les commandes de if sont séparées par ";", c'est la dernière commande qui sera testée.
 Si les commandes de if sont séparées par &&, alors elles sont toutes testées.
Exemple:
if commande1 && commande2
then liste_de_commandes
else liste_de_commandes
fi
 Si les commandes de if sont séparées par l'opérateur "||", il suffirait que l'une d'elles soit
vraie pour passer à l'exécution des commandes de then.
TAYARI Lassaad
Page 53
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Exemple:
if commande1
|| commande2
then liste_de_commandes
else liste_de_commandes
fi
 Il est possible d'imbriquer des structures conditionnelles.
La syntaxe est:
if liste_de_commandes
then liste_de_commandes
else
if liste_de_commandes
then liste_de_commandes
else liste_de_commandes
fi
fi
ou encore:
if liste_de_commandes
then liste_de_commandes
elif
liste_de_commandes
then liste_de_commandes
else liste_de_commandes
fi
TAYARI Lassaad
Page 54
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
Exemple:
$cat >filetest
if test -x $1
then echo "fichier $1 existe et est exécutable"
else echo "fichier $1 n'existe pas ou n'est pas exécutable"
fi
Ce programme sert à identifier les fichiers exécutables.
If test ! -s $1
then echo "fichier $1 n'existe pas"
else
if test -x $1
then echo "fichier $1 existe et est exécutable"
else echo "fichier $1 existe mais n'est pas exécutable"
fi
fi
V-2/ La structure case-in-esac.
La structure case-in-esac permet d'effectuer un traitement spécifique selon la valeur
de la variable test. La syntaxe est :
case $variable in
TAYARI Lassaad
chaine1)
commandes;;
chaine2)
commandes;;
Page 55
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
.
.
chaineN)
commandes;;
esac
La commande case compare la variable aux chaînes spécifiées et exécute les
commandes relatives au chaînes qui correspondent.
Exemple:
 choix d'un couleur parmi plusieurs:
echo "choisir une lettre parmi R B N J"
read choix
case $choix in
"R")
echo "ROUGE";;
"B")
echo "BLEU";;
"N")
echo "NOIR";;
"J")
echo "JAUNE";;
esac
VI/ LES BOUCLES:
VI-1/ La construction for-in-do-done.
Cette construction permet de répéter le même traitement pour des valeurs différents
d'une variable. Il y a autant de boucles que de valeurs.
La syntaxe est :
for variable
in
val1 val2 val3 ...... valN
do
TAYARI Lassaad
Page 56
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
commande1
commande2
.
commandeN
done
Les valeurs que peut prendre la variable peuvent être des paramètres, exemple $1,
$2,...., ou le paramètre global $*.
Exemples:
 test sur la permission en exécution pour 3 fichiers.
$Cat >exec
for fichier in fichier1 fichier2 fichier3
do
[ -x $fichier ]
echo $?
done
 Ce test peut être paramètré pour agir sur un nombre illimité de fichiers.
for fichier in $*
for fichier
do
do
[ -x $fichier ]
[ -x $fichier ]
echo $?
echo $?
done
TAYARI Lassaad
done
Page 57
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
VI-2/ La construction while-do-done.
Cette boucle exécute une suite de commandes tant qu'une condition est vrai.
La syntaxe est:
while condition
do
commande1
commande2
.
.
commandeN
done
Donc tant que la condition est vraie, exécuter les commandes.
La condition peut être simple ou composée.
Exemples:
 Programmation d'un compteur:
$cat compteur
compteur=1
while test $compteur -le 20
TAYARI Lassaad
Page 58
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
do
echo $compteur
compteur=` expr $compteur + 1 `
done
 Affichage des utilisateurs toutes les minutes:
$cat >qui
while true
(
où while :
)
do
who
sleep 60
done
^d
$sh qui&
VI-3/ La construction until-do-done.
Cette construction permet de répéter une séquence de commandes jusqu'à ce que la
condition soit vrai, c'est à dire quelle fonctionne a l'inverse de la boucle while-do-done.
Sa syntaxe est:
until
condition
do
commande1
commande2
TAYARI Lassaad
Page 59
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
.
.
commandeN
done
Donc, cette construction permet d'exécuter les commandes tant que la condition n'est pas
satisfaite (condition fausse). La condition est testée la première.
Exemples:
 Programmation d'un compteur:
$cat compteur
compteur=1
until test $compteur -gt 20
do
echo $compteur
compteur=` expr $compteur + 1 `
done
VI-4/ Sortie d’une boucle. (Break)
L'utilisation de l'expression while true ou while : permet de conduire a une boucle
infinie. Pour quitter cette boucle, on peut utiliser la commande break[n] où n est le nombre
de niveaux de boucles imbriquées à sauter (1 par défaut)
Exemple:
 Somme des notes d'un étudiant:
TAYARI Lassaad
Page 60
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
$cat>somme
compteur=1
somme=0
while true
do
echo "entrez la $compteur ième note :"
read note
if test $note -eq 999
then
break
else
compteur= ` expr $compteur +1 `
somme=` expr $somme + $note `
fi
done
echo "La somme est $somme"
VI-5/ Saut vers la fin d’une boucle.(continue)
Contrairement à la commande break, la commande continuee permet de sauter vers
la fin d'une boucle sans la quitter forcement.
Exemple:
 Déplacement des fichiers exécutables sur un nouveau répertoire "binaire".
$Cat > copie
mkdir binaire
for fichier
do
TAYARI Lassaad
Page 61
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
if test -x $fichier
then
cp $fichier binaire/$fichier
echo " fichier $fichier sur binaire "
else
continuee
fi
done
^d
$sh copie *
VI-6/ La récursivité.
Une procédure est dite récursive si elle fait appel à elle-même. Le paramètre $0 qui
indique le nom de la procédure est très souvent utilisé.
Exemple:
 Affichage de tous les sous-répertoires de l'utilisateur:
$cat > repliste
if [ -d
$1 ]
then echo "$1 est un répertoire"
for j in $1/*
do
$0 $j
done
TAYARI Lassaad
Page 62
ISET DE NABEUL
Cours
Programmation structuré
d’UNIX &C
fi
^d
TAYARI Lassaad
Page 63
ISET DE NABEUL
Cours
Les filtres
d’UNIX &C
Chapitre 6
LES FILTRES
Objectif:
Connaître et manipuler les différentes techniques de recherche, d'organisation et
d'accès aux données se trouvant dans le système de fichier (fichiers et répertoires).
Prérequis:
 Les chapitres précédents de ce cours d’UNIX.
Plan
I/ La commande grep: (recherche dans le texte)
II/ la commande sort: (tri et fusion)
III/ La commande find: (recherche de fichiers)
IV/ La commande awk: (balayage dans le texte)
IV-1/ Les variables prédéfinis de awk
IV-2/Les opérateurs et fonctions pré-définies de awk
IV-3/ Les modèles de awk
IV-4/ Les structures de contrôle de awk
V/ Conclusion
TAYARI Lassaad
Page 59
ISET DE SFAX ~ A.U 97/98
Cours
Les filtres
d’UNIX &C
Chapitre 6
LES FILTRES
I/ LA COMMANDE GREP: (RECHERCHE DANS LE TEXTE)
La commande grep permet la recherche, dans un ou plusieurs fichiers, des lignes qui
correspondent à une séquence donnée.
Sa syntaxe est:
$grep [-option]
séquence
[fichier(s)]
Parmi les options de grep:
-v
: Affichage des lignes qui ne contiennent pas la séquence.
-c
: Affichage du nombre d'occurrence.
-l
: Affichage des noms de fichiers contenant la séquence.
-n
: Chaque ligne affichée est numérotée.
-y
: Confondre les minuscules et les majuscules.
Exemples:
1- recherche du mot "amitié" dans le fichier humanite
$grep amitié humanite
$grep -v amitié humanite
$grep -n amitié humanite
2- savoir si l'utilisateur user2 est connecté:
TAYARI Lassaad
Page 60
ISET DE GABES
Cours
Les filtres
d’UNIX &C
$who|grep user2
La commande grep supporte les métacaractères:
Caractères spéciaux
Signification
[.......]
identification d'une plage pour une série de caractères.
[^......]
négation de la plage indiquée.
.
n'importe quel caractère y compris l'espace
*
caractère de répétition, agit sur le caractère précèdent.
^
symbolise un début de ligne dans un critère de recherche.
$
matérialise la fin de le ligne
\{.......\}
caractère de répétition. Entre les accolades vous pouvez
définir librement le nombre de survenances possibles pour le
caractère précèdent.
Exemples:
1- Trouver et afficher toutes les lignes du fichier timbre commençant par une majuscule.
$grep '^[A-Z].*' timbre
ou
$grep '^[A-Z]\{1,\}' timbre
2- afficher les processus de tous les utilisateurs userx
$ ps -f|grep user.*
3- afficher à partir du fichier /etc/passwd les utilisateurs qui commencent par les lettres 'a'
jusqu'à 'e':
$grep '^[a-e].*' /etc/passwd
Exercice : Expliquez la commande suivante:
$grep '^[a-e].*[:]$' /etc/.passwd
La commande grep n'est qu'un membre d'une famille qui comprend deux autres
commandes dérivées: egrep et fgrep.
TAYARI Lassaad
Page 61
ISET DE GABES
Cours
Les filtres
d’UNIX &C
 Le programme fgrep recherche plusieurs séquences à la fois.
Sa syntaxe est:
ou
fgrep -option
expr_reg
fgrep -option
-f
fichier(s)
fich_expr
fichier(s)
 Le programme egrep interprète des expressions régulières, utilisant les parenthèses et
l'opérateur logique "ou". Sa syntaxe est la même que fgrep.
Exemples:
1- recherche de deux mots dans le fichier "virus":
$fgrep 'programmeur
>programme' virus
2- Affichage des lignes de /etc/passwd contenant les utilisateurs userx et quelques
utilisateurs IIX :
$egrep 'user*|II[1-5]' /etc/passwd
3- affichage d'un mot et quelques dérivés:
$egrep 'programm(es|e|ation)' virus
II/ LA COMMANDE SORT: (TRI ET FUSION)
Le programme sort à pour rôle de trier un ou plusieurs fichiers ligne par ligne. Le tri se fait
sur la base de clés de tri qui peuvent êtres un ou plusieurs champs de la ligne ou une partie
d'un champ.
La syntaxe est:
sort
-option
+pos1 -pos2 fichier_in
-o
fichier_out
parmi les options de sort:
TAYARI Lassaad
Page 62
ISET DE GABES
Cours
Les filtres
d’UNIX &C
-r : tri en ordre inverse
-n : tri en ordre numérique
-d : seuls sont considérés l'alphabet, les chiffres et le "blanc"
-u : suppression de tous les lignes doubles, sauf un.
Pos1 et pos2 indiquent le début et la fin de la clé de tri et peuvent prendre le valeurs m ou
m.n:
+ m.n est interprétée comme le (n+1)ème caractère du (m+1)ème champ
-m.n est interprétée comme le nème caractère du m ème champs.
Exemples:
1- tri des utilisateurs courants:
$who|sort
2- tri en ordre croissant: du fichier "fich1":
$sort -r
fich1
3- tri et fusion de deux fichiers "fich1" et "fich2" sur le troisième champ. Le résultat est
sauvegardé dans fich3.
$Sort +2
fich1 fich2
-o fich3
4- tri des utilisateurs selon l'heure de connexion:
$who |sort +4
Le tri peut se faire selon plusieurs clés de tri:
un clé primaire (déclaré en premier lieu) et des clés secondaires (déclarés après le clé
primaire.
Exemple:
TAYARI Lassaad
Page 63
ISET DE GABES
Cours
Les filtres
d’UNIX &C
tri des processus en cours: le premier champ est le clé primaire et le deuxième est le clé
secondaire.
$ps -f|sort +0 +1
III/ LA COMMANDE FIND: (RECHERCHE DE FICHIERS)
La commande find sert à parcourir l'arborescence des répertoires à la recherche des
fichiers. Pour ce faire, il va falloir fixer des critères de recherche.
La commande find parcourt les répertoires et leurs sous-repertoires de manière récursive, à
la recherche de fichiers.
Trois indication sont nécessaires a l'exécution de la commande find.
1- répertoire de recherche (spécification)
2- les critères de recherche à mettre en oeuvre
3- comportement si un fichier répond aux critères.
La syntaxe de la commande find est la suivante:
find répertoires
[critères _de_séléction]
[option_de_commande]
Si aucune indication n'est faite, la commande find recherche tous les fichiers. Il est
possible de mentionner des options de recherche pour limiter la recherche. Si cette
commande à trouvée un fichier correspondant au critère, il est traité par les options de
commande. On peut utiliser -print, -exec et -ok.
TAYARI Lassaad
Page 64
ISET DE GABES
Cours
Les filtres
d’UNIX &C
Les options de choix utilisables pour la recherche sont:
OPTION
SIGNIFICATION
-name fichier
recherche par nom de fichier
-type type
recherche par type de fichier
-user nom
recherche par propriétaire
-group nom
recherche par groupe
-size nombre
recherche par taille
-atime jour
recherche par date du dernier accès
-mtime jour
recherche par date de dernière modification
-ctime jour
recherche par date de création
-perm droit
recherche par droit d'accès
-lien nombre
recherche par nombre de lien
Pour toutes les options en dehors de -name, -type, -user, -group et -perm, les nom d'options
sont complétés par des valeurs. Ces chiffres peuvent aussi êtres précédés des signes "+" ou
"-".
"+" signifie "supérieur à".
"-" signifie "inférieur à".
Exemple:
pour trouver tous les fichiers de répertoire /work ayant plus de quatre liens:
$find /work -lien +4 -print
L'option -exec introduit une commande qui sera exécuté si un fichier correspondant au
critère de sélection est trouvé:
TAYARI Lassaad
Page 65
ISET DE GABES
Cours
Les filtres
d’UNIX &C
Attention ! !  La commande placée derrière -exec doit se terminer par "/;".
 si on veut accéder, dans la commande placée derrière -exec, au fichier qui
vient d'être trouvé, on doit utiliser l'abréviation {}.
Exemple:
Si on veut exécuter ls -l pour chaque fichier trouvé:
$find . -user user3 -exec ls -l {}\;
Pour l'option de commande -ok, on applique la même syntaxe que pour -exec. Mais dans
cas, il sera demandé si on souhaite exécuter cette commande. Si la réponse est "y", la
commande find exécute la commande qui suit l'option -ok.
Exemple:
$find . -ok rm{}\;
<rm................>?n
Si plusieurs options sont spécifiés, elles sont censées êtres liées par un lien logique/
!
pour la négation logique
-a
pour le ET logique
-o
pour le OU logique
Exemples:
1- Afficher tous les fichiers qui sont soit des répertoires soit dont le nom termine par "ier", à
partir du répertoire actif:
$find . \(-type d -o -name "*ier"\) - print
2- Afficher tous les répertoires placés sous le répertoire actif et commençant par une
minuscule:
$find . -name "[a-z]*" -type d -print
ou
$find . \(-name "[a-z]*" -a -type d\) -print
TAYARI Lassaad
Page 66
ISET DE GABES
Cours
Les filtres
d’UNIX &C
3- Afficher tous les fichiers ayant une taille supérieure à 400 blocs (200 ko)
$find . -type f -size +400 -print
4- Afficher tous les fichiers appartenant a user2. La recherche est effectuée dans le
répertoire /dev et /usr/user2.
$Find /dev /usr/user2 -user user2 -exec ls -l {]\;
IV/ LA COMMANDE awk: (BALAYAGE DANS LE TEXTE)
L'utilitaire awk lit ligne par ligne dans un fichier spécifié ou par le canal d'entrée standard.
Chaque ligne est subdivisée en champs.
La syntaxe de base est:
awk 'programme' fichiers
ou
awk -f progfile
fichiers
Si le programme est lu à partir d'un fichier, le programme est un ensemble de conditions et
d'actions écrites de la façon suivante:
condition1
{action1}
condition2
{action2}
.
.
.
.
.
.
conditionN
{actionN}
Le module awk traite les fichiers en entrée article par article. Chaque ligne est comparée aux
différentes conditions du programme. Si la séquence est vraie, alors l'action est exécutée.
IV-1/ Les variables prédéfinis de awk
Le programme awk divise automatiquement chaque ligne en champs qui sont
normalement délimités par des "blancs" ou <TAB>. Ces champs auront pour noms
TAYARI Lassaad
Page 67
ISET DE GABES
Cours
Les filtres
d’UNIX &C
$1,$2,......,$NF. La constante $0 se réfère à l'article entier. Les différentes variables de awk
sont:
VARIABLE
SIGNIFICATION
FILENAME
nom du fichier en entrée courant
FS
séparateur de champs des articles en entrée.
NF
nombre de champs des articles en entrée
NR
nombre des articles en entrée
RS
séparateur d'articles en entrée
OFS
séparateur de champs des articles en sortie
ORS
séparateur d'articles en sortie
IV-2/Les opérateurs et fonctions pré-définies de awk
Les conditions du programme awk peuvent êtres des expressions régulières, comme
c'est le cas de grep et egrep, ou des conditions composées avec l'utilisation d'opérateurs
divers, de fonctions prédéfinies et de structures conditionnelles semblables à ceux du
langage C (if, while, do, for, break, continue...). Par exemple, la structure suivante:
$awk '/expression régulière / {print}' fichiers
Permet de parcourir les fichiers citées et d'afficher chaque ligne qui comprend l'expression
mentionnée. Si l'expression est omise, toutes les lignes seront affichées. Si l'action est
omise, c'est l'action print qui sera prise par défaut. Les opérations utilisées sont les même
que celles utilisé dans le langage C.
Les fonctions pré-définies de awk sont multiples. Les plus utilisées sont:
TAYARI Lassaad
Page 68
ISET DE GABES
Cours
Les filtres
d’UNIX &C
FONCTION
DESCRIPTION
index(seq1,seq2)
donne la position de se2 dans seq1
length(seq)
donne la longueur en caractères de seq
split(seq,a,fs)
divise la séquence seq en n éléments de tableau a[1], a[2],.....,a[n] et où
fs est le séparateur de champs (FS par défaut). La valeur de n est
donnée en sortie.
substr(seq,m,n)
donne les n caractères de la sous-séquence de seq qui commence à la
position m.
getline
lecture de la ligne suivante.
Exemples:
1- Subdivision du résultat de who en plusieurs champs et affichage des noms triés, date et
nombre des champs:
$who|awk '{print $1,$NF,NF}' |sort
2- Affichage des lignes du fichier fich1 qui contiennent un nombre impair de mots:
$awk 'NF%2!=0 {print $0}' fich1
3- Affichage des lignes de fich1 qui dépassent les 75 colonnes:
$awk 'length>75 {print}' fich1
4- Affichage des caractères indésirables pour les lignes qui dépassent les 75 colonnes:
$cat fichprg
length > 75 {print "résidu ligne ", NR,, substr($0,75,NR)}
^d
$awk -f fichprg fich1
IV-3/ Les modèles de awk
TAYARI Lassaad
Page 69
ISET DE GABES
Cours
Les filtres
d’UNIX &C
awk à une multitude de possibilités permettant de former des modèles de sélection
de ligne. On distingue quatre formes possibles:
 critère vide
 critère fixe
 comparaison
 critère de recherche
a- critère vide: utilisé à chaque fois qu'on souhaite appliquer une action à l'ensemble
des lignes. Il suffit d'omettre le critère devant l'accolade ouverte de l'action.
b- critère fixe: Il y a deux critère BEGIN et END.
Les actions liées à ces critères sont exécutés avant la lecture de la première ligne ou après la
lecture de la dernière ligne du fichier.
Exemple:
$awk '
BEGIN {
print "début de traitement"
}
{ print $1,$3 }
END {
print "fin de traitement"
}
' fich1
TAYARI Lassaad
Page 70
ISET DE GABES
Cours
Les filtres
d’UNIX &C
c- comparaison: Un critère peut contenir une expression, donc des opérations de
comparaison. (les mêmes opérateurs que le langage C.)
Exemple:
$awk ' $2>=5 {print $1,$2}' fich1
d- critère de recherche: Pour la recherche, awk utilise des méta caractères. Ces méta
caractères sont les mêmes que celles de grep, mais placés entre back slash.
Exemple:
$awk ' /[0-9]/1[0-9]/ {print } ' fich1
IV-4/ Les structures de contrôle de awk
awk dispose d'une série de structures de contrôle concernant:
 les décisions
 les boucles
 les sauts contrôlés.
a- les décisions:( le if )
même syntaxe que pour le langage C.
Exemple:
$awk '
...... .
NF==7 {
if($2=="")
{
TAYARI Lassaad
Page 71
ISET DE GABES
Cours
Les filtres
d’UNIX &C
print $1 "message"
}
}
.........
' fichier
b- les boucles: trois boucles sont possibles: while, do-while et for
même syntaxe que pour le langage C.
Exemples:
 utilisation de while:
$awk '
{
i=NF
while (i>0)
{
print $i
i=i-1
(ou i--)
}
} ' fichier
 utilisation de for
$awk '
{
TAYARI Lassaad
Page 72
ISET DE GABES
Cours
Les filtres
d’UNIX &C
for(i=NF;i>0;i--)
{
print $i
}
} ' fichier
c- les sauts contrôlés:
 Pour le contrôle des boucles: on utilise les instruction break et continue (comme
pour le langage C.
 Pour le contrôle du programme : on utilise
next :Demande à awk d'interrompre le traitement de la ligne active et de lire
immédiatement la ligne suivante.
exit
:Termine le programme.
Attention !!! Dans tous les cas, les actions de la critère fixe END seront exécutés
et le programme ne sera abandonné qu'après.
TAYARI Lassaad
Page 73
ISET DE GABES
Téléchargement