Académique Documents
Professionnel Documents
Culture Documents
Arnaud AMELINA 1
Initiation aux Systèmes Unix UCAU-UUT
5 Système de fichiers
L’un des rôles importants du système d’exploitation est de donner accès aux données à manipuler,
sachant que les programmes, dont font partie les commandes, sont eux aussi repérés par leur
contenant, les fichiers. Cette section présente les concepts afférents à l’organisation et la
manipulation (copie, renommage...) des données : les répertoires, les fichiers (ordinaires) et les
fichiers spéciaux. La section se termine par la présentation des droits d’accès à ces données.
À tout moment, dans une fenêtre de terminal, l’utilisateur « travaille » dans un répertoire, appelé
« répertoire de travail » ou « répertoire courant ». Tout élément de l’arborescence peut être
référencé de deux façons, soit par rapport à la racine (le nom de l’élément est dit « absolu »), soit
par rapport au répertoire de travail courant (le nom est alors dit « relatif »).
On peut remarquer que le filet oblique joue un double rôle : en premier caractère d’un nom, il
symbolise la racine et caractérise un nom absolu alors que partout ailleurs il ne sert que de
séparateur de noms.
Arnaud AMELINA 2
Initiation aux Systèmes Unix UCAU-UUT
L’utilisateur qui veut visualiser le contenu d’autres répertoires peut utiliser la commande ls avec le
nom de ces répertoires en arguments ou se déplacer dans l’arborescence avant d’utiliser cette
commande sans argument. La commande cd permet un déplacement dans le répertoire passé en
argument. Quelle que soit sa position dans l’arborescence, l’utilisateur peut à tout moment revenir
directement à son répertoire de connexion grâce à la commande cd sans argument.
La commande ls permet d’afficher les entrées d’un répertoire avec plus ou moins d’informations
selon les options utilisées. Par défaut, ls affiche seulement le nom des entrées dites non cachées, c.-
à-d. celles dont le nom ne commence pas par un point. Pour visualiser les entrées cachées, il faut
ajouter l’option –a pour les afficher toutes. La commande ls dispose de beaucoup d’options dont la
plus utilisée est l’option –l qui permet d’afficher les principaux attributs des entrées : type (« d »
répertoire, en anglais directory, « – » pour un fichier dit ordinaire contenant du texte, un
programme...), droits d’accès (lecture, écriture...), propriétaire, groupe, taille (en octets), date (de
dernière modification) et nom (de l’entrée).
Arnaud AMELINA 3
Initiation aux Systèmes Unix UCAU-UUT
La caractéristique principale du système de fichiers Unix est d’offrir une vision uniforme à
l’utilisateur malgré la diversité des types d’éléments qu’il regroupe : répertoires, fichiers
(traditionnels ou ordinaires) et fichiers spéciaux représentant les périphériques. Cette uniformité est
assurée grâce à la notion d’inode qui est une structure de 128 octets servant de descripteur pour
toute entrée du système de fichiers. Chaque inode possède un numéro (unique). Comme ce sont des
données décrivant des données, les inodes sont appelées des méta-données. Les méta-données sont
la carte d’identité des entrées de l’arborescence. Un inode contient notamment le type de l’entrée
repérée (fichier, répertoire...), l’identité du propriétaire (avec son groupe) de l’entrée, les droits
d’accès (en lecture, en modification...) de l’entrée, la taille de l’entrée.
Pour pouvoir stocker des informations sur un support magnétique tel qu’un disque, celui-ci doit
d’abord être découpé en partitions (ou disques virtuels), chacune étant alors utilisée comme un
disque à part entière et se présentant comme une suite de N blocs numérotés de 0 à N-1. Pour
stocker des données sur une partition, il faut y créer un système de fichiers. Cette opération a pour
objet de distinguer quatre zones sur le disque et d’y créer un répertoire racine :
1. Le premier bloc (bloc 0) est réservé pour contenir un programme chargeur (amorce ou boot
en anglais) qui sert au démarrage du système. Bien que seule la partition de démarrage
contenant le programme du système d’exploitation ait besoin de cette amorce, le bloc 0 de
chaque système de fichiers est réservé pour des raisons d’homogénéité.
2. Le bloc suivant (bloc 1), appelé « super-bloc », sert de descripteur du système de fichiers. Il
est pour un système de fichiers l’équivalent de l’inode pour un fichier. Il contient les
caractéristiques du système de fichiers telles que son nom, la date de mise à jour, la taille des
blocs... S’y trouvent également des informations de gestion telles que le début des listes
d’inodes et de blocs libres.
3. Un certain nombre de blocs à partir du numéro 2 sont réservés pour contenir la liste des
inodes. Ce nombre d’inodes détermine le nombre maximal de fichiers que peut contenir ce
système de fichiers.
4. Les blocs suivants (du premier bloc après la liste des inodes jusqu’au dernier) servent pour
stocker les blocs de données.
Arnaud AMELINA 4
Initiation aux Systèmes Unix UCAU-UUT
Pour résumer, par analogie, le super-bloc décrit les propriétés d’un classeur, les blocs inodes
forment l’index du classeur, les blocs de données le contenu du classeur, et enfin, le bloc d’amorce
indique la première page du classeur (qui n’est pas obligatoirement la première page physique).
Par conséquent, un système de fichiers peut être saturé de deux manières, soit par manque de blocs
de données libres, soit par manque de blocs d’inodes. Le nombre maximal de fichiers est le nombre
maximal d’inodes. Ce nombre est fixé à la création du système de fichier, c.-à-d. au formattage de la
partition ; il est généralement égal au nombre maximal de blocs de la partition divisé par quatre.
Enfin, Unix permet la création de fichiers vides : il suffit de créer un inode seul sans lui associer de
données.
Arnaud AMELINA 5
Initiation aux Systèmes Unix UCAU-UUT
L’idée de base pour l’organisation des adresses (directes et indirectes) est de ne pas être limité en
taille le fichier (grâce aux adresses indirectes) tout en ne pénalisant pas l’accès aux petits fichiers
(grâce aux adresses directes). Ainsi, la taille maximale d’un fichier est supérieure à la taille d’une
partition et très nettement supérieure à la taille raisonnable d’un fichier.
Les premières commandes de cette page sont des commandes du type filtre. Un filtre est un
programme qui réalise un traitement sur un flot de données, ici produit par la lecture d’un fichier
texte en entrée, pour fournir un flot de données en sortie. Ce concept plutôt classique prend tout son
intérêt grâce aux différentes formes que peuvent revêtir les flots de données. Ce point sera détaillé
dans la section sur le shell avec les redirections et les tubes. Les filtres présentés maintenant sont
des filtres dits « simples ». Ces commandes acceptent de très nombreuses options que nous n’avons
pas le temps ni l’espace de décrire ici. Avant d’appliquer un filtre sur un fichier, il est préférable de
s’assurer que le fichier contient du texte. La commande file permet de le savoir. Dans le cas de
texte, elle précise si les caractères sont uniquement des caractères ASCII ou s’ils contiennent
d’autres caractères, par exemple des caractères accentués ISO-8859-X (X dans [1–15]).
La commande de base pour afficher le contenu d’un fichier de texte est cat suivie du nom du fichier.
Cette commande accepte plusieurs noms de fichiers comme arguments, ce qui permet de les
concaténer (cat signifie concatenate) en un seul flot de sortie.
La commande cat n’est guère pratique avec des fichiers dont la taille dépasse celle de l’écran car
l’affichage défile de façon ininterrompue et seules les dernières lignes affichées restent visibles sur
l’écran à la fin de la commande. La commande more prend en compte le nombre de lignes de
l’écran pour offrir un affichage page par page. Cette commande affiche une page du fichier suivie
d’une ligne d’information avec le pourcentage de texte déjà affiché et elle attend une requête du
clavier. Si la commande est appelée avec plusieurs arguments, elle affiche en plus un en-tête avec le
nom du fichier entre deux lignes constituées de caractères deux points (« : »). Les requêtes les plus
utilisées sont espace (ou z) pour afficher la page suivante, ENTRÉE pour afficher la ligne suivante,
b pour afficher la page précédente et q (ou Q) pour quitter la commande avant la fin.
La commande tail affiche la fin du fichier passé en argument. Par défaut, tail affiche les dix
dernières lignes. Cette commande permet également de suivre dynamiquement l’évolution d’un
fichier. En utilisant l’option –f (fil de l’eau), elle affiche la fin du fichier puis elle entre dans une
boucle infinie avec affichage chaque seconde de toute nouvelle information qui est ajoutée au
fichier.
Arnaud AMELINA 6
Initiation aux Systèmes Unix UCAU-UUT
La commande head affiche le début du fichier passé en argument. Par défaut, head affiche les dix
premières lignes. Cette commande ressemble à la commande tail mais elle est plus limitée au niveau
des options. Par contre, elle peut accepter plusieurs fichiers comme arguments. Dans ce cas, la
commande head affiche avant le début de chaque fichier, un en-tête avec le nom du fichier.
Toujours pour un fichier de texte, la commande wc (word count) permet de compter les lignes, les
mots et les caractères. Lorsque la commande est appelée avec plusieurs arguments, elle affiche
également un total cumulé.
Arnaud AMELINA 7
Initiation aux Systèmes Unix UCAU-UUT
5.6 Répertoires
• Le contenu d’un répertoire est un catalogue qui met en correspondance des noms de fichiers,
de sous-répertoires avec des numéros d’inode.
• Dès la création par la commande mkdir rep, deux entrées existent :
• La référence au répertoire parent (du répertoire créé) noté « .. »
• La référence (autoréférence) au répertoire lui-même noté « . »
• Pour supprimer un répertoire, il faut qu’il soit « vide », ne contenir que « .. » et « . ».
• La suppression s’effectue avec la commande rmdir rep.
Arnaud AMELINA 8
Initiation aux Systèmes Unix UCAU-UUT
Un répertoire sert à la mise en correspondance entre des noms de fichiers et des numéros d’inodes.
Dès sa création avec la commande mkdir, tout répertoire contient deux entrées qui sont notées « . »
(point) pour le répertoire lui-même (autoréférence) et « .. » (point point) pour le répertoire de
rattachement (parent) dans l’arborescence. Pour supprimer un répertoire avec la commande rmdir, il
faut que celui-ci soit vide, c.-à-d. ne contienne que les deux éléments de départ (« . » et « .. »). Pour
la racine (« / »), les deux éléments « . » et « .. » sont confondus.
Pour des raisons de performance, il est préférable d’organiser les informations selon un mode
arborescent plutôt que d’avoir d’importantes listes de fichiers sous un même répertoire. D’ailleurs,
le système de fichiers Unix a introduit une hiérarchie et une terminologie de répertoires standards,
chacun regroupant des éléments de même nature. Ainsi, les exécutables sont regroupés sous bin
(binary), les bibliothèques sous lib (library), les périphériques sous dev (device), la documentation
sous man (manual), les sources sous src, les fichiers et programmes d’administration sous etc, les
fichiers temporaires sous tmp, les éléments spécifiques au site local sous local, les fichiers système
sous sys...
Dans la suite, afin d’alléger les dessins, les contenus des répertoires sont représentés hors des zones
des blocs de données. Bien évidemment, les contenus des répertoires sont toujours des blocs de
données.
Arnaud AMELINA 9