Chapitre 2 Gestion Fichiers Sous Linux
Chapitre 2 Gestion Fichiers Sous Linux
Chapitre 2 Gestion Fichiers Sous Linux
CHAPITRE 2 :
Eléments de contenu
I. Introduction
II. Système de gestion de fichiers
III. Désignation des partitions sous Linux
IV. Système de fichier
V. Arborescence
VI. Chemins relatifs et chemins absolus
VII. Types de fichiers
VIII. Catégories de fichiers
IX. Les i-nodes de fichiers
X. Commande Shell de manipulation de fichiers
Volume Horaire :
Cours : 4 heures 30 mn
TD : 1 heure 30 mn
2.1 Introduction
Le volume des données traitées par les applications informatiques atteignant plusieurs Méga et Giga
octets, ces données ne peuvent pas être stockées dans la mémoire centrale. On souhaite également
disposer d'un stockage à long terme qui ne disparaisse pas lorsqu'on éteint la machine. Le principe consiste
à stocker ces données dans des mémoires secondaires sous forme de fichiers, c'est-à-dire de suites de blocs
(la plus petite unité que le périphérique de stockage est capable de gérer). Le contenu de ces blocs, simple
suite de chiffres binaires, peut être interprété selon le format de fichier comme des caractères, des
nombres entiers ou flottants, des codes d'opérations machines, des adresses mémoires, etc... L’échange
entre les deux types de mémoires se fait ensuite par transfert de blocs.
L'objectif du système de fichier est de permettre l'accès au contenu du fichier (l'ouverture du fichier, sa
recopie à un second emplacement ou sa suppression) à partir de son chemin d'accès, formé d'un nom
précédé d'une liste de répertoires imbriqués.
Imene Sghaier 1
Systèmes d’exploitation – Gestion de Fichiers sous linux
Le Master Boot Record (MBR) est situé dans les premiers secteurs du disque. Le mode de partitionnement
MBR est le mode historique des ordinateurs de type IBM PC-compatible et le plus répandu. Dans ce
modèle, une zone de 512 octets appelée le Master Boot Record (MBR) est réservée en début de disque pour
contenir l'information relative à un maximum de 4 partitions.
Le MBR est constitué de 2 parties :
La table de partition ;
Le programme d’amorçage qui charge le noyau du système d’exploitation.
Dans un disque dur, plusieurs types de partitions peuvent coexister. On peut mentionner les partitions
principales, étendues et logiques.
Les partitions principales :
• Sont au maximum de 4
• Accepte tout type de système de fichiers.
Les partitions étendues :
• Sont destinées à contenir des partitions logiques et non au système de fichiers,
• Nécessitent au moins une partition principale.
Les partitions logiques :
• Sont contenues dans une partition étendue,
• Accepte tout type de systèmes de fichiers.
Sous Linux, le pointeur spécial /dev permet l’accès aux disques.
Pour dénommer les disques, un format est adopté : /dev/XXYZ où
XX désigne le type de bus :
Imene Sghaier 2
Systèmes d’exploitation – Gestion de Fichiers sous linux
Imene Sghaier 3
Systèmes d’exploitation – Gestion de Fichiers sous linux
NTFS : Ce système de fichiers a aussi été développé par Microsoft, et il reste très peu
documenté. L'écriture depuis Linux sur ce système de fichiers est stable à l'aide du pilote ntfs-
3g.
extFAt : Ce système de fichiers a aussi été développé par Microsoft. L'écriture depuis Linux
sur ce système de fichiers est stable à l'aide du pilote exfat-fuse
Linux utilise également FAT, FAT32, NTFS et extFat ainsi que plusieurs autres systèmes de fichiers, nous
citons :
ext2fs : Extended File System est le système de fichiers natif de Linux. Les versions 1 et 2 de
ce système ne disposent pas de la journalisation. Ext2 peut tout de même s'avérer utile sur des
disquettes 3½ et sur les autres périphériques dont l'espace de stockage est restreint, car aucun
espace ne doit être réservé à un journal.
ext3fs : ext3 est essentiellement ext2 avec la gestion de la journalisation. Il est possible de
passer une partition formatée en ext2 vers le système de fichiers ext3 (et vice versa) sans
formatage.
ext4fs : ext4 est considéré par ses propres concepteurs comme une solution intermédiaire en
attendant le vrai système de nouvelle génération que sera Btrfs.
ReiserFS : Développé par Hans Reiser et la société Namesys, ReiserFS est reconnu
particulièrement pour bien gérer les fichiers de moins de 4 ko. Un avantage du ReiserFS, par
rapport à ext3, est qu'il ne nécessite pas une hiérarchisation aussi poussée: il s'avère
intéressant pour le stockage de plusieurs fichiers temporaires provenant d'Internet. Par
contre, ReiserFS n'est pas recommandé pour les ordinateurs portables, car le disque dur
tourne en permanence, ce qui consomme beaucoup d'énergie.
2.5 Arborescence
Une arborescence est une organisation logique de fichiers sur un ou plusieurs systèmes de fichiers. Il s’agit
d’une structure de données hiérarchique de type arbre. Le système qui gère les fichiers sous Linux est un
peu déroutant au début, surtout quand on est habitué à celui de Windows. En effet, sous Windows, il y a
en fait plusieurs racines.C:\est la racine du disque dur, E:\est la racine de votre lecteur CD (par exemple).
Sous Linux, il n'y a qu'une et une seule racine : « / ». Il n'y a pas de lettre de lecteur car justement,
Linux ne donne pas de nom aux lecteurs comme le fait Windows. Il dit juste « La racine, c'est/ ». Au lieu
de séparer chaque disque dur, lecteur CD, lecteur de disquettes, lecteur de carte mémoire… Linux place
en gros tout au même endroit sous une seule racine.
Imene Sghaier 4
Systèmes d’exploitation – Gestion de Fichiers sous linux
Répertoire Sous-
Racine Fichiers
s Répertoire
httpd.conf
squid
etc
home user
TP.c
Figure 2 : Exemple d’arborescence
etc : répertoire contenant les fichiers de configuration. Ce répertoire contient des fichiers de
données ainsi que des programmes réservés pour la maintenance du système. Ces fichiers
conditionnent notamment le démarrage du système, les entrées en session, etc… Ce répertoire
contient notamment le fichier passwd qui est un fichier texte contenant la liste des noms
utilisateurs avec les mots de passe cryptés, leur identification (uid et gid), leurs répertoires initiaux
et leurs Shells. On y retrouve également le fichier group qui est un fichier texte contenant la liste
des groupes d'utilisateurs, leurs identificateurs et les listes d'utilisateurs par groupe.
bin : répertoire contenant les principales commandes disponibles pour les utilisateurs ;
boot : répertoire contenant les fichiers de démarrage du système contenant le noyau ;
home : répertoire contenant les répertoires personnels des utilisateurs. Lorsque vous êtes
connecté sous Unix, vous vous retrouvez chez vous à savoir votre home directory qui a été
assigné par l'administrateur système ( Ex : /home/imene ). Tous les fichiers ou répertoires
que vous allez créer, le seront sous votre home directory.
root : répertoire personnel du super-utilisateur ;
usr : Ce répertoire est réservé pour l'utilisation du système. Il est essentiellement utilisé comme
répertoire racine pour de nombreux sous répertoires, notamment pour représenter les répertoires
personnels des utilisateurs (home directories). Par exemple, l’administrateur du système
réservera le plus souvent pour un utilisateur nommé « imene » un répertoire personnel
Imene Sghaier 5
Systèmes d’exploitation – Gestion de Fichiers sous linux
/usr/imene. De plus, des sous répertoires additionnels sont créés et réservés pour Unix. Ces sous
répertoires sont généralement les suivants :
/usr/bin est un répertoire composé essentiellement de fichiers contenant le code exécutable
des principales commandes sous linux. Si un de ces fichiers est supprimé ou change de nom,
la commande correspondante ne sera plus reconnue.
/usr/include est un répertoire qui contient les fichiers référencés en tête (*.h) d'un
programme source en langage C.
/usr/lib est un répertoire qui comprend généralement des bibliothèques ou fichiers de
données supplémentaires à l'usage de linux.
/usr/spool est un répertoire contenant une variété de sous répertoires utiles pour y conserver
les fichiers en attente d'impression.
var : répertoire contenant les journaux systèmes. Il contient une hiérarchie de fichiers système qui
évoluent durant le fonctionnement de la machine. Ex : /var/spool/ est le répertoire contenant
les files d'attente pour les sous-systèmes du courrier, de l'impression,
dev : point d’entrée vers les périphériques. Ce répertoire contient des fichiers spéciaux qui
assurent le contrôle des accès aux différents dispositifs d'entrée/sortie. Ces fichiers sont
indispensables et ne peuvent en aucun cas être détruits sous peine de rendre impossible l'accès
aux unités correspondantes. Il est donc utilisé pour les périphériques, terminaux, etc. …
proc : pseudo-système contenant des informations sur les processus en exécution
Remarques :
Sous le système Linux, plusieurs symboles sont utilisés pour désigner les répertoires. On cite pour cela :
Le « . » : pour désigner le répertoire courant (la commande pwd affiche le nom
du répertoire courant)
Le « .. » : pour désigner le répertoire parent courant (la commande cd .. affiche le
nom du répertoire parent)
Le « ~ » : pour désigner le répertoire personnel de l’utilisateur (la commande cd
~ affiche le nom du répertoire personnel)
Imene Sghaier 6
Systèmes d’exploitation – Gestion de Fichiers sous linux
Sous Linux, un chemin d'accès se compose d'une suite de mots séparés par des /. Il faudra cependant
faire la distinction entre les chemins d'accès absolus et relatifs.
Chemin absolu : la référence absolue d'un objet (fichier ou répertoire) se fait par la liste des
répertoires traversés pour atteindre cet objet, en commençant par la racine /. Ex:
/home/imene/iset/cours référence le fichier cours qui est sous le répertoire iset lui-même sous
imene qui lui est sous la racine ce qui est indiqué par le premier /.
Chemin relatif : la référence relative d'un objet (fichier ou répertoire) se fait par la liste des
répertoires traversés pour atteindre cet objet, relativement au répertoire courant de travail. Ex :
TP/tp2.c indique qu'à partir du répertoire de travail, on doit trouver un sous répertoire TP
contenant le fichier tp2.c
Tout chemin qui ne commence pas par un caractère / (slash) est interprété comme un chemin relatif au
répertoire courant. On peut ainsi accéder aux fichiers du répertoire courant en donnant simplement leur
nom.
les fichiers classiques : ce sont les fichiers que nous connaissons, ça comprend les fichiers texte
(.txt,.doc,.odt…), les sons (.wav,.mp3,.ogg), mais aussi les programmes. Bref, tout ça, ce sont des
fichiers retrouvables dans Windows ;
les fichiers spéciaux : certains autres fichiers sont spéciaux car ils représentent quelque chose.
Par exemple, le lecteur CD est un fichier pour Linux. Là où Windows fait la distinction entre ce
qui est un fichier et ce qui ne l'est pas, Linux, lui, dit que tout est un fichier. C'est une
conception très différente, un peu déroutante comme je vous l'ai dit, mais pas de panique, vous
allez vous y faire.
Imene Sghaier 7
Systèmes d’exploitation – Gestion de Fichiers sous linux
Les fichiers normaux (-) : comme les fichiers textes, courrier, sources de programmes(c,
java…), scripts, configuration, exécutables, programmes en code binaire.
Les fichiers répertoires (directories en Anglais) (d) : ce sont des fichiers conteneurs qui
contiennent des références à d'autres fichiers. Ils permettent d'organiser les fichiers par
catégories.
Les fichiers spéciaux : situés sous /dev, ce sont les points d'accès préparés par le système aux
périphériques. Le montage va réaliser une correspondance de ces fichiers spéciaux vers leur
répertoire "point de montage". Par exemple, le fichier /dev/hda permet l'accès et le
chargement du 1er disque IDE.
Les fichiers liens symboliques (l) : 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 noms sans
avoir à le dupliquer sur le disque.
Remarques :
Imene Sghaier 8
Systèmes d’exploitation – Gestion de Fichiers sous linux
Lorsqu'un utilisateur se connecte à une station Unix, il est placé dans un répertoire personnel, en
général situé dans le répertoire /home. La commande pwd affiche le chemin d'accès au
répertoire courant.
Imene Sghaier 9
Systèmes d’exploitation – Gestion de Fichiers sous linux
Les métacaractères permettent donc de spécifier facilement des ensembles de fichiers, sans avoir à rentrer
tous leurs noms. Voici les plus utilisés :
* remplacé par n’importe quelle suite de caractères.
? remplacé par un seul caractère quelconque.
[ ] remplacé par l’un des caractères mentionnés entre les crochets. On peut spécifier un
intervalle avec - : [a-z] spécifie donc l’ensemble des lettres minuscules.
Exemple
ls *.[a-z].*
hel.l.o a.m.a
ls [hg]*
ger hello
file nom_de_fichier
Imene Sghaier 10
Systèmes d’exploitation – Gestion de Fichiers sous linux
Exemple:
file toto.c
toto.c: c program text
ln –s fichier1 /titi/lien
ls –i fichier1 /titi/lien
6341 fichier1 4230 /work/liensym
ls -l /titi/lien
4230 lrwxrwxrwx 1 …………. /titi/liensym fichier1
Si on supprime le fichier de nom fichier1 : rm fichier1
Puis on fait ls -i fichier1 /titi/lien on aura :
fichier1 not found
4230 /titi/lien
Si on fait cat /titi/lien on aura :
cat : il n y a pas un fichier ou un répertoire de ce type.
Les liens physiques (ou liens durs) représentent un nom alternatif pour un fichier c’est la
création de deux ou plusieurs noms vers une inode unique au moyen de la commande ln. Ainsi,
lorsqu'un fichier possède deux liens physiques, la suppression de l'un ou l'autre de ces liens
Imene Sghaier 11
Systèmes d’exploitation – Gestion de Fichiers sous linux
n'entraîne pas la suppression du fichier. Plus exactement, tant qu'il subsiste au minimum un lien
physique, le fichier n'est pas effacé mais lorsque l'ensemble des liens physiques d'un même fichier
est supprimé, le fichier est aussi supprimé. Il faut noter toutefois qu'il n'est possible de créer des
liens physiques qu'au sein d'un seul et même système de fichiers. Les liens physiques sont créés à
l'aide de la commande ln selon la syntaxe suivante :
ln nom-du-fichier-reel nom-du-lien-physique
Lors de la création d’un lien physique il n'y a ni copie du fichier, ni création d'un nouvel i-node, mais
simplement augmentation du compteur de référence du fichier dans un répertoire.
ls -li fichier1
6341 -rw-rw-r-- 1 …………. fichier1
ln fichier1 /titi/liendur
$ls –li fichier1 /titi/ liendur
6341 -rw-rw-r-- 2 …………. fichier1
6341 -rw-rw-r-- 2 …………. /titi/ liendur
Les deux fichiers partent vers le même numéro d’index (numéro d’inode), ce qui veut dire qu’il y a un seul
espace disque associé aux deux noms.
Si on déplae le fihier1 :
mv fichier1 fichier2
puis on fait :
ls -li fichier2
on aura :
6341 -rw-rw-r-- 2 …………. fichier2
Si on supprime fichier2 :
rm fichier2
puis on fait :
ls -li fichier2 /titi/liendur
On aura :
fichier2 not found
6341 -rw-rw-r-- 1 …………. /titi/liendur
2.10.10 La commande cp
cp [-options] source destination
Si « destination » est un répertoire, la commande cp copie le ou les fichier(s) source vers « destination ». Si
« destination » est un nom de fichier, la commande cp renomme le fichier de nom source.
Imene Sghaier 12
Systèmes d’exploitation – Gestion de Fichiers sous linux
Si on effectue une copie d'un fichier sur un fichier qui existe déjà, celui-ci sera écrasé et remplacé par le
nouveau fichier, certaines options de cp peuvent nous éviter de pareilles situations. On site dans ce qui
suit quelques options :
cp -i : avertit l'utilisateur de l'existence d'un fichier du même nom et lui demande s'il peut ou non
remplacer son contenu.
cp -b : permet également de s'assurer que la copie n'écrase pas un fichier existant : le fichier écrasé
est sauvegardé, seul le nom du fichier d'origine est modifié et cp ajoute une tilde (~) à la fin du
nom du fichier.
cp -p : permet lors de la copie de préserver toutes les informations concernant le fichier comme le
propriétaire, le groupe, la date de création.
cp -r : permet de copier de manière récursive un répertoire et ses sous-répertoires.
Imene Sghaier 13
Systèmes d’exploitation – Gestion de Fichiers sous linux
L’options -i permet de demander à l'utilisateur s'il souhaite vraiment supprimer le ou les répertoires en
question.
Parmi les informations contenues dans l’inode de tout élément de l’arborescence, on trouve les droits
d’accès. La protection d’un élément repose sur trois droits d’accès qui contrôlent les trois opérations de
lecture (droit r pour read), d’écriture (droit w pour write) et d’exécution (droit x pour execute). Ces trois
droits (rwx) sont appliqués à trois catégories d’utilisateurs qui sont le propriétaire (user : u) de l’élément,
son groupe (group : g) et les autres utilisateurs (others : o).
La notion de groupe correspond simplement à un ensemble d’utilisateurs auxquels on peut attribuer les
mêmes droits d’accès aux fichiers. Ainsi, chaque utilisateur appartient à un groupe et son identité qui sert
pour les contrôles d’accès est définie par un numéro d’utilisateur (UID : User IDentification) et un
numéro de groupe (GID : Group IDentification).
Tout système a besoin de comptes spécialisés, avec des droits importants, pour des tâches
d’administration. Sous UNIX, il existe un compte root dit compte de super-utilisateur, caractérisé
par son numéro d’utilisateur (l’UID zéro) qui lui confère les pleins pouvoirs.
La signification des droits diffère selon le type de l’élément : répertoire ou fichier
Forme symbolique
chmod [ugoa] [+|-|=] [rwx] fichier
La syntaxe symbolique précise au moyen d'une simple lettre la catégorie des utilisateurs concernés par la
nouvelle protection :
u pour user, propriétaire du fichier,
g pour group, les utilisateurs du même groupe que le propriétaire,
pour others pour les autres utilisateurs,
a pour all, pour les 3 catégories des utilisateurs. Cette option est utile quand une même
protection doit être définie vis-à-vis des 3 catégories des utilisateurs.
La syntaxe symbolique utilise l’opérateur + pour ajouter et - pour enlever ou = pour réassigner un droit
d'accès. Lorsque l'opérateur = est utilisé, les types d'accès énumérés sont autorisés et les autres non
mentionnés sont supprimés.
Imene Sghaier 14
Systèmes d’exploitation – Gestion de Fichiers sous linux
La syntaxe symbolique exige après l'opérateur que soient énumérées des lettres précisant les types d'accès à
autoriser ou interdire. Le débutant se contentera d'utiliser r pour la lecture, w pour l'écriture et x pour
l'exécution.
Exemples
chmod g+w titi permet aux utilisateurs du groupe du propriétaire du fichier titi d'accéder en
plus à l'écriture.
chmod a=r toto autorise uniquement l'ensemble des utilisateurs à accéder au fichier toto en
lecture seule. Si l'accès en écriture était autorisé, ce droit est supprimé.
chmod ug-w tata interdit dorénavant au propriétaire et son groupe de tenter une modification
du fichier tata.
Forme numérique
chmod mode fichier
La commande chmod peut être utilisée avec un masque composé de 3 chiffres en octal. Les bits de ce
masque autorisent les types d'accès correspondants avec la même relation entre poids des bits et types
d'accès.
Le bit de poids 4 autorise les accès en lecture,
le bit de poids 2 autorise les accès en écriture
le bit de poids 1 autorise les accès en exécution.
Exemple :
chmod 750 toto
permet, pour le fichier toto, d'autoriser n'importe quel type d'accès de la part du propriétaire, de limiter les
accès des utilisateurs du même groupe que le propriétaire en lecture et exécution, d'interdire tout type
d'accès émanant des autres utilisateurs.
Exemples
chmod 644 titi permet d’allouer les droits d’accès suivants : -rw-r—r—
chmod 622 tata permet d’allouer les droits d’accès suivants : -rw—w-w-
Imene Sghaier 15
Systèmes d’exploitation – Gestion de Fichiers sous linux
droits maximum. Vous pouvez faire en sorte de changer ces paramètres par défaut. La commande
umask est là pour ça.
Pour un fichier :
Si vous tapez umask 022, vous partez des droits maximum 666 et vous retranchez 022, on obtient
donc 644, par défaut les fichiers auront comme droit644 (-rw-r-r--).
Si vous tapez umask 244, vous partez des droits maximum 666 et vous retranchez 244, on obtient
donc 422, par défaut les fichiers auront comme droit422 (-rw--w--w-).
Pour un répertoire :
Si vous tapez umask 022, vous partez des droits maximum 777 et vous retranchez 022, on obtient
donc 755, par défaut les fichiers auront comme droit644 (-rwxr-xr-x).
Si vous tapez umask 244, vous partez des droits maximum 777 et vous retranchez 244, on obtient
donc 533, par défaut les fichiers auront comme droit422 (-rwx-wx-wx).
Imene Sghaier 16
Systèmes d’exploitation – Gestion de Fichiers sous linux
Exemples
ls –l tp.doc
-rw-r--r-- 1 imene enit 432 Feb 22 12:42 tp.doc
chgrp iset tp.doc
ls –l tp.doc
-rw-r--r-- 1 imene iset 432 Feb 22 12:42 tp.doc
Syntaxe
find répertoire(s) critère_de_sélection option(s)
Si on n’indique pas un critère de recherche, l’ensemble des fichiers placés sous le répertoire de
départ sera considéré comme répondant à la recherche et sera donc sélectionné. Le
critère_de_sélection permet d’extraire une partie de ces fichiers à partir de l’ensemble.
La commande find a de nombreuses options de sélection qui permettent de rechercher les
fichiers qui vérifient certains critères. En voici quelques unes :
Critère Signification
Recherche par nom de fichier. Le motif peut utiliser les caractères
-name motif
génériques du Shell ?, *, [ ]
Recherche par type de fichier. f pour le fichier ordinaire, d pour les
-type type
répertoires, b pour les fichiers spéciaux en mode bloc, c pour les fichiers
Imene Sghaier 17
Systèmes d’exploitation – Gestion de Fichiers sous linux
Imene Sghaier 18
Systèmes d’exploitation – Gestion de Fichiers sous linux
L’option –print
La commande find doit être utilisée avec l'option -print. Sans l'utilisation de cette option, même
en cas de réussite dans la recherche, find n'affiche rien à la sortie standard (l'écran, plus
précisément le shell). La commande find est récursive, c'est à dire où que vous tapiez, elle va aller
scruter dans les répertoires, et les sous répertoires qu'il contient, et ainsi de suite.
Exemple :
$find -print
.
./fic1
./fic2
./rep1
./rep1/fich2
./rep1/document
Cette commande a permis d’afficher toute la liste des fichiers du répertoire courant de façon
récursive. C’est la plus simple ligne de commande utilisant find.
L’option –exec
L’option –exec permet d’exécuter une commande sur les fichiers qui vérifient les critères de
sélection.
-exec commande {} \;
Exemples :
La commande suivante permet de rechercher les fichiers ordinaires de l’arborescence du
répertoire courant qui ont une taille égale à 0 et supprimer chacun des fichiers trouvés.
Imene Sghaier 19
Systèmes d’exploitation – Gestion de Fichiers sous linux
L’option –ok
A la différence de l’option –exec, l’option –ok effectue la même chose mais en demandant
confirmation de l’utilisateur avant l’exécution de la commande.
-ok commande {} \;
Exemples
La commande suivante recherche dans le répertoire courant les fichiers dont le nom commence
par p et se termine .c
find . –name "p*.c" -print
La commande suivante recherche dans le répertoire courant les fichiers ordinaires ayant un
numéro d'index > 13230 et affiche chaque fichier trouvé avec son numéro d'index.
find . –type f –inum +13230 -exec ls –i {} \;
La commande suivante affiche les fichiers de l’arborescence du répertoire /home qui ont été
modifié dans les dix derniers jours.
find /home -mtime -10 -print
La commande suivante affiche les renseignements détaillés sur les fichiers de l’arborescence du
répertoire /users qui appartiennent à toto et qui ont été modifié dans les dix derniers jours.
find /users –user toto –mtime -10 –exec ls –ld {} \;
La commande suivante affiche les renseignements détaillés sur les fichiers de l’arborescence du
répertoire de connexion de l’utilisateur imene et qui appartiennent à imene.
Imene Sghaier 20
Systèmes d’exploitation – Gestion de Fichiers sous linux
La commande suivante affiche les renseignements détaillés sur les fichiers ordinaires
l’arborescence du répertoire courant qui ont au moins la permission 400, c'est-à-dire au moins le
propriétaire a le droit de lecture du fichier.
find . –type f –perm -400 –exec ls –ld {} \;
La commande suivante supprime après confirmation par l’utilisateur les fichiers ordinaires
l’arborescence du répertoire courant et qui sont vides.
find . –type f –size 0 –ok rm {} \;
Remarque
On a vu auparavant ce qu'étaient les méta caractè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.
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
- [^...] plage de caractères interdits
Imene Sghaier 21
Systèmes d’exploitation – Gestion de Fichiers sous linux
Exemples :
- l'expression grep [a-z][a-z] * cherche les lignes contenant au minimum un caractère en
minuscule. [a-z] caractère permis, [a-z]* recherche d'occurrence des lettres permises. L'expression
^[0-9]\ {4\}$ a pour signification, du début à la fin du fichier $, recherche les nombres[0-9] de 4
chiffres \ {4\}.
- Exemple avec le fichier carnet-adresse :
olivier:29:0298333242:Brest
marcel:13:0466342233:Gardagnes
myriam:30:0434214452:Nimes
yvonne:92:013344433:Palaiseau
Un filtre est un programme qui sait écrire et lire des données par les canaux standard d’entrée et
de sortie (lit les données du clavier et retourne un résultat à l’écran). Il peut aussi agir sur les
données d’un fichier donné en paramètre.
La commande grep lit les données, soit par le canal d’entrée standard, soit directement dans un
fichier. Cette commande affiche sur l’écran les lignes des fichiers qui contiennent une chaîne de
caractères correspondante à l’expression régulière spécifiée dans la ligne de commande par le
paramètre modèle_de_critére. Autrement dit, le modèle_de_critère définit les lignes à trouver. Le
modèle peut contenir des caractères spéciaux définis dans le second tableau.
Syntaxe
Imene Sghaier 22
Systèmes d’exploitation – Gestion de Fichiers sous linux
Options
Expressions régulières
Les expressions régulières sont utilisées par plusieurs commandes en particulier la commande
grep. Un caractère ordinaire se désigne par lui-même mais l’expression régulière peut aussi
contenir des caractères spéciaux.
Imene Sghaier 23
Systèmes d’exploitation – Gestion de Fichiers sous linux
Exercice
On considère le fichier Fleurs :
cat Fleurs
Rose
Jasmin
Lilles
Orchidées
Marguerites
Camomilles
a. Rechercher dans le fichier Fleurs les lignes qui commencent par une lettre entre L et O .
b. Rechercher dans le fichier Fleurs les lignes qui commencent par une voyelle.
c. Rechercher dans le fichier Fleurs les lignes qui commencent par une lettre non voyelle .
d. Rechercher dans le fichier Fleurs les lignes qui commencent par un caractère quelconque et le
second caractère est le caractère o.
e. Rechercher dans le fichier Fleurs les lignes qui se terminent par « se ».
f. Rechercher dans le fichier Fleurs les lignes qui ne commencent pas par M (l’option -v).
g. Rechercher les lignes qui ne commencent pas par M et afficher leur nombre seulement.
Solution
a.
grep ^[O-L] Fleurs
Lilles
Orchidées
Marguerites
b.
grep ^[aeiou] Fleurs
Orchidées
Imene Sghaier 24
Systèmes d’exploitation – Gestion de Fichiers sous linux
c.
grep ^[^aeiou] Fleurs
Rose
Jasmin
Lilles
Marguerites
Camomilles
d.
grep ^.o Fleurs
Rose
e.
grep se$ Fleurs
Rose
f.
grep -v ^p Fleurs
Rose
Jasmin
Lille
Orchidées
Camomille
g.
grep -v -c ^M Fleurs
1
La commande sort effectue un tri des lignes d’un ensemble de fichiers (l’entrée standard par
défaut). Les lignes sont triées selon la valeur d’une clé de tri formé d’une ou plusieurs champs
extraits de chaque ligne. Par défaut, le tri se fait sur les lignes selon l’ordre lexicographique et
selon l’ordre croisant.
Imene Sghaier 25
Systèmes d’exploitation – Gestion de Fichiers sous linux
+pos1 –pos2 permet d’indiquer le début et la fin du colonne de tri. Il indique que la colonne de
tri commence au champ numéro pos1+1 et se termine a champ numéro pos2+1 (non compris).
Exemple : +2 -3 désigne le champ numéro 3. +2 -4 désigne les champs 3 et 4.
Option Signification
Effectuer un tri numérique et non lexicographique sur les clés. On peut
-n aussi accoler l’option n derrière pos1 si on ne veut trier numériquement
que certains champs.
Ignorer les différences entre les majuscules et minuscules. Toutes les
-f
minuscules sont converties en majuscules et le tri n’est effectué qu’après.
-r Inversion de l’ordre de tri, donc tri est par ordre décroissant.
Le caractère « c » après l’option –t est définit comme caractère de séparation
-tc
entre les champs d’une ligne.
Exercice :
On suppose que le fichier Agenda utilise le séparateur tabulation entre les champs.
cat Agenda
Zitouni Sarra 2090 Ariana 71345098
Skouri Mouna 2080 Tunis 71527860
Chebbi Moez 1060 Mahdia 73903561
Azzouna Ahmed 2100 Nabeul 72209189
Imene Sghaier 26
Systèmes d’exploitation – Gestion de Fichiers sous linux
Solution :
a.
sort +1 -2 Agenda
Azzouna Ahmed 2100 Nabeul 72209189
Skouri Mouna 2080 Tunis 71527860
Chebbi Moez 1060 Mahdia 73903561
Zitouni Sarra 2090 Ariana 71345098
b.
sort -n +2 -3 Agenda
Chebbi Moez 1060 Mahdia 73903561
Skouri Mouna 2080 Tunis 71527860
Zitouni Sarra 2090 Ariana 71345098
Azzouna Ahmed 2100 Nabeul 72209189
c.
sort +1 -2 +3n -4n Agenda
d.
sort –t: +2n -3n /etc/passwd
Le tri ne se fait pas correctement si on oublie l’option n à la suite de +2. Ceci parce qu’on veut
effectuer un tri d’un champ numérique.
wc [options] [fichiers]
Cette commande affiche le nombre de lignes, de mots, de caractères et le nom de chaque fichier.
Si des fichiers ne sont pas spécifiés, l’entrée standard est prise par défaut.
Options
-l : nombre de lignes seulement
-w : nombre de mots seulement
-c : nombre de caractères seulement
Imene Sghaier 27
Systèmes d’exploitation – Gestion de Fichiers sous linux
Exercice
a. Comptez le nombre de fichiers de /bin
ls -a /bin | wc –l
b. Comptez les lignes, mots et caractères de tous les fichiers du répertoire courant dont le
nom commence par b.
wc -lwc b*
tr chaîne1 chaîne2
La commande tr transforme les caractères provenant de l’entrée standard ainsi (les caractères
contenus dans la première chaîne sont transformés en les caractères correspondants dans la
seconde chaîne et les autres caractères sont conservés tels quels. Le tout est envoyé vers la sortie
standard.
Exercice
1. Ecrivez une commande qui permet de convertir le texte lu à partir du clavier (entrée
standard).
tr "aeiou" "AEIOU"
bonjour
Ctrl^D
bOnjOUr
2. Ecrivez une commande qui permet de convertir le texte du fichier /etc/passwd de façon à
changer chaque minuscule en une majuscule.
La commande grep sélectionne des lignes individuelles dans un fichier ou dans le flux de
données. On parle dans ce cas de sélection horizontale. La commande cut sert à couper des
zones dans chaque ligne, donc à effectuer une sélection verticale. cut sélectionne soit des
Imene Sghaier 28
Systèmes d’exploitation – Gestion de Fichiers sous linux
colonnes bien précises, que vous souhaitez afficher, soit elle montre des champs séparés les uns
des autres par des caractères de séparation définis par l’utilisateur.
Sélection de colonnes
Cette commande découpe un ou plusieurs fichiers (entrée standard par défaut) en sélectionnant
des intervalles de caractères indiqués à l’aide de l’option -c. Le résultat est envoyé à la sortie
standard.
Le paramètre liste est une liste de nombres séparés par des virgules avec éventuellement des tirets
pour indiquer un intervalle. Le découpage se fait en se basant sur les numéros de caractères.
Cette liste indique quels seront les caractères qui seront conservés sur chaque ligne.
- une colonne individuelle (par exemple –c5)
- une plage de colonnes (par exemple -c3-10 ou –c8-)
- une liste de chiffres séparés par des virgules (par exemple –c3,7,9)
- une combinaison des trois formes précédentes (par exemple -c1-3,7,20-)
Exemples
1, 3, 8 : désigne les caractères dans les positions 1, 3 et 8.
2-5, 10 : désigne les caractères dans les positions entre 2 et 5 et la position 10.
-5, 8 : désigne les caractères situés dans les positions de 1 à 5 et la positions 8.
3- : désigne les caractères de la position n°3 jusqu’à la fin de la ligne.
Exercice :
Soit le fichier Mois suivant
cat Mois
Mois
Janvier
Février
Mars
a. Ecrivez une commande qui permet d’afficher le premier caractère du fichier Mois.
Imene Sghaier 29
Systèmes d’exploitation – Gestion de Fichiers sous linux
b. Ecrivez une commande qui permet d’afficher les 3 premiers caractères du fichier Mois.
cut –c1-3 Mois
Moi
Jan
Fév
Mar
Sélection de champs
cut [-dx] -fliste [fichier…]
Dans ce cas, le découpage se fait sur des champs indiqués par l’option –f, délimités par un
délimiteur indiqué par l’option -d.
Le séparateur par défaut est la marque de tabulation. Pour fixer un autre caractère délimiteur de
champs, on utilise l’option –d, en plaçant le caractère de séparation derrière l’option –d.
Exercice :
On considère le fichier adresses qui contient des champs séparés par deux points comme suit :
cat Adresses
Mahmoudi:Houssem:9000:Gabes
Belguessem:Ghassen:5090:Gafsa
Mediouni:Maha:3080:Beja
a. Ecrivez une commande qui permet de sélectionner le 3ème champ du fichier adresses
cut -d: -f3
9000
Imene Sghaier 30
Systèmes d’exploitation – Gestion de Fichiers sous linux
5090
3080
b. Ecrivez une commande qui permet d’afficher le 2ème et 4ème champ du fichier adresses
cut -d: -f2,4
Houssem Gabes
Ghassen Gafsa
Maha Beja
La commande diff permet d’indiquer quelles sont les lignes qu’on doit changer dans le premier
fichier pour qu’il sera identique au second fichier.
diff fichier1 fichier2
Exemple
cmp fich1 fich2
fich1 fich2 differ: char 160 line 5
Imene Sghaier 31
Systèmes d’exploitation – Gestion de Fichiers sous linux
La commande head extrait les n premières lignes de chacun des fichiers (entrée standard par
défaut). Par défaut la valeur de n est égale à 10.
La commande tail permet de copier la fin du fichier sur la sortie standard à partir de la position
désignée. La première ligne affichée sur la sortie standard est indiquée par la position qui peut
être +n (la nième ligne du fichier) et qui peut être aussi –n (la nième ligne à partir de la fin du fichier).
position : un nombre qui définit le nombre de lignes à présenter.
+position : recopie à partir de la position donnée en partant du début.
-position : recopie à partir de la position donnée en partant de la fin.
Exercice :
Soit le fichier Fruits suivant
cat Fruits
pomme
poire
orange
pamplemousse
fraise
banane
Imene Sghaier 32
Systèmes d’exploitation – Gestion de Fichiers sous linux
pamplemousse
fraise
banane
Exercice :
Soit le fichier prénoms suivant
cat prénoms
mohamed
imene
Ali
Anis
olfa
safa
ahmad
safa
hajer
a. Ecrivez une commande qui affiche les lignes du fichiers “prénoms” tout en ignorant les
doubloons
uniq prénoms
mohamed
imene
Ali
Anis
olfa
safa
ahmad
Imene Sghaier 33
Systèmes d’exploitation – Gestion de Fichiers sous linux
sort prénoms
ahmad
Ali
Anis
imene
mohamed
olfa
safa
safa
sort prénoms|uniq
ahmad
Ali
Anis
imene
mohamed
olfa
safa
Imene Sghaier 34