I. Système de fichiers sous Unix

Par Hugo ETIEVANT


  1. Arborescence
  2. Noms de fichiers
  3. Chemin d'un fichier
    1. Répertoire parent
    2. Répertoire courant
    3. Chemin absolu
    4. Chemin relatif
  4. Types de fichiers
    1. Exécutable
    2. Répertoire
    3. Lien (ln)
      1. Symbolique
      2. Physique
    4. Fichier
    5. Fichier caché
  5. Navigation (cd)
  6. Commandes sur le système de fichiers
  7. Lister les fichiers (ls)
  8. Méta-caractères

Arborescence

arboraissance des fichiers

Comme dans tous les autres systèmes d'exploitation, les données sont organisées en fichiers eux-mêmes organisés en répertoires (et sous-répertoires) sur les éléments de sauvegarde. L'architecture du système de fichiers est sous la forme d'un arbre dont le répertoire noté / est la racine. Tous les autres répertoires en sont les noeuds et les fichiers les feuilles. Un système de fichier est donc un arbre n-aire.


Noms de fichiers

Sous Unix (et contrairement au Dos), tous les caractères alphanumériques plus la ponctuation sont des caractères valides. De plus il n'existe pas de notion d'extention de fichier. Cela fait du caractère . (point) un caractère comme un autre qui peut apparaître plus d'une fois dans un nom de fichier. Par contre l'espace est considéré comme un séparateur à proscire dans le nommage des fichiers. Le système Unix n'accepte pas les caractères accentués et distingue les minuscules des majuscules.

Exemples :

  • MonProg.c et monprog.c ne représentent pas les mêmes fichiers
  • a.b... est un nom de fichier valide sous Unix
  • tp6-31/03/2001.c est valide
  • _Z_ l'est aussi

Alors que sous Dos, les fichiers sont au format 8.3 c'est-à-dire que les fichiers portent un nom de 8 caractères et une extention de 3 caractères séparés par un point (.), le système Unix autorise tout comme Windows95 des noms de fichiers long (256 caractères environ).

Les caractères invalides sous Dos (;+=[]',"*\<>/?:|.) sont acceptés par Unix.

Exemple : logo.cyber+zoide.jpeg est accepté par Unix mais refusé par Dos.


Chemin d'un fichier

Tous ces éléments sont hérarchisés les uns par rapport aux autres. Cette contrainte est représentée par la notion de chemin d'un fichier. En effet, un fichier est localisable sans ambiguité (de façon exacte et unique) par son chemin. Ce dernier représente la succession des répertoires à parcourir pour accéder au fichier (navigation dans l'arbre). Les répertoires sont séparés par un slash noté / dans l'écriture du chemin (attention, c'est le même symbole qui représente la racine).

Répertoire parent

Le répertoire parent est celui hiérarchiquement immédiatement supérieure à celui courant. Il est noté deux points ..

Répertoire courant

On appelle répertoire courant celui dans lequel on se trouve à un instant donné durant la navigation dans le système de fichiers. Il est noté point .

Chemin absolu

Le chemin absolu désigne la succession des répertoires à parcourir depuis la racine pour accéder au fichier spécifié.

Exemple : /home/h-etie00/tpC/tp3.c pour accéder au fichier tp3.c du système de fichier ou qu'on se trouve dans le système (représenté dans le schéma plus-haut).

Chemin relatif

Le chemin relatif désigne la succession des répertoires à parcourir depuis le réperoire courant pour accéder au fichier spécifié.

Exemple: ../monprog.c pour accéder au fichier monprog.c lorsqu'on se trouve dans le répertoire tpC. La présence du répertoire parent dans ce chemin relatif permet de remonter dans l'arbre.


Types de fichiers

Sous Unix, les fichiers peuvent être de 5 types différents :

Exécutable

Les fichiers exécutables correspondent à des programmes (écrits en langage C généralement). Il n'est pas conseillé de tenter de les éditer à l'aide d'un éditeur de texte traditionnel : il n'apparaîtra que des caractères bizarres et incomprehensibles. Seules les chaînes de caractères stockées en constantes dans l'exécutable seront visibles. Mais en général la taille d'un exécutable devrait vous en dissuader.

Répertoire

Les répertoires, nous l'avons vu plus haut, sont des ensembles de fichiers et de répertoires.

Un répertoire peut ne contenir aucun fichier. Mais en revanche, un répertoire contient toujours un répertoire parent .. et un répertoire courant . .

Les liens (ln)

Les liens sont des fichiers assez spéciaux puisqu'il permettent d'associer plusieurs noms à un seul et même fichier. Pour créer un lien, utiliser la commande ln.

L'utilité des liens est évidente puisqu'ils permettent à partir d'un seul fichier physiquement présent sur l'espace disque, d'avoir plusieurs références de noms différents et localisées en des lieux différents d'un même fichier qu'il n'est plus besoin de copier. Lorsque le fichier pointé est volumineux, l'emploi des liens est donc très avantageux.

Les liens peuvent êtres de deux types :

Lien symbolique

Un lien symbolique est un simple pointeur vers un autre fichier bien réel.

La commande ln -s permet de créer un lien symbolique sur un fichier. Ce lien sera présent sous la forme d'un fichier dont le nom sera affiché après le symbole @.

Syntaxe : ln -s nom-du-fichier-à-pointer nom-du-lien-symbolique

Lien physique

Un lien physique sur un fichier est un fichier qui occupe exactement le même espace disque que le fichier vers lequel il pointe.

Ainsi les deux fichiers : le lien et le fichier pointé sont physiquement les mêmes bien que virtuellement (pour le système de fichiers) ils portent des noms différents et puissent être localisés dans des répertoires différents.

Syntaxe : ln nom-du-fichier-à-pointer nom-du-lien-symbolique

Vous aurez remarquer ici l'absence de l'attribut -s réservé aux liens symboliques.

Fichier

Un fichier est de type fichier lorsqu'il est "tout à fait normal", qu'il n'a rien de particulier ; c'est-à-dire lorsqu'il n'est ni un exécutable, ni un répertoire et ni un lien.

Fichier caché

Les fichiers et répertoires cachés se distinguent des autres par la seule présence d'un point (.) en première position dans leur nom. La commande de listage des fichiers ne les affichera pas par defaut.


Navigation (cd)

La commande unix de navigation dans le système de fichier est : cd pour Change Directory.

ExempleDescription
cd .Se déplace vers le répertoire courant c'est-à-dire ne change pas de place!
cd ..Va dans le réperoire parent.
cd /Saute vers le réperoire racine, à la base de tout le système.
cd /homeSe déplace vers le répertoire home fils de la racine.
cd /home/h-etie00Parcours l'arbre jusqu'au répertoire h-etie00 en passant par la racine, puis par home.
cd ../MailRemonte l'arbre d'un cran, puis va dans le répertoire Mail
cd ../..Remonte de deux crans.


Commandes sur le système de fichiers

CommandeDescription
rmSupprime un fichier ou un répertoire.
mvDéplace ou renomme un fichier ou un réperoire.
mkdirCrée un réperoire.
rmdirSupprime un répertoire.
cpCopie un fichier ou un répertoire.
pwdAffiche le chemin du répertoire courant.
cdSe déplace dans le système de fichier.
lsAffiche la liste des fichiers et répertoires.
lnCrée un lien vers un fichier.

Aux commandes sur les fichiers (rm, mv, cp) vous pouvez spécifier plusieurs arguments et utiliser les méta-caractères.


Lister les fichiers (ls)

Une commande essentielle de tout système d'exploitation est le listage des fichiers et sous-répertoires du répertoire courant.

L'équivalent sous Unix de la commande dir du Dos est ls.

Syntaxe : ls

Exemple :

$ ls
amoi.c           montage.jpg     tp3.c
lettre.doc       tp1.c           zizitop.mp3
monprog.c        tp2.c           

Cette commande accepte les méta-caractères afin de n'afficher que les fichiers qui répondent à certaines contraintes lexicographique.

Syntaxe : ls expression-régulière

Exemple :

$ ls *.c
amoi.c           tp1.c           tp3.c
monprog.c        tp2.c

On peut afficher toutes les informations relatives à un fichier : type, droits, numéro d'inode, nom, UID, GID, taille, date et heure de création... avec l'attribut -l.

Syntaxe : ls -l

Exemple :

$ ls -l
-rwxr--r--  1 root  univ   106  Apr 10  15:09 amoi.c
drwxr-xr-x  1 root  univ  1024  Jan 5   20:54 DATA
-rwx------  1 root  univ  5160  Feb 23  09:22 lettre.doc
lrwxrwxrwx  1 root  univ     3  Jan 24  12:16 tp -> TpK

Pour afficher les fichiers cachés, utiliser l'attribut -a (all). Très pratique pour lister les fichiers de configuration.

Syntaxe : ls -a

Exemple :

$ ls -a
.bash            lettre.doc      tp2.c
.netscape        monprog.c       tp3.c
.profile         montage.jpg     zizitop.mp3
amoi.c           tp1.c

CommandeDescription
lsListe les fichiers par ordre aplabétique en colonnes.
ls -lListe les fichiers en ligne avec toutes les informations connexes.
ls -aListe en plus les fichiers cachés.
ls -mSépare les fichiers par une virgule.
ls -tTri par date.
ls -luTri par date de dernier accès et affiche cette date.
ls -FAffiche les types de fichiers i.e. en rajoutant le symbôle correspondant : / (répertoire), * (exécutable), @ (lien).
ls -STri par ordre de taille décroissante.
ls -XTri par type d'extention.
ls -rTri inverse.


Méta-caractères

Les méta-caractères * (astérisque) et ? (point d'interrogation) sont très utiles lors de la manipulation de fichiers en groupe. Le méta-caractère * remplace dans l'expression dans laquelle il apparait, zéro, un ou plusieurs autre(s) caractère(s). Quand à ?, il remplace un et un seul caractère.

Par exemple, la commande rm * -r supprime tous les fichiers de tous les réperoires inclus dans celui courant. A utiliser avec parcimonie!

Alors que mv tp*.c tpC déplace dans le répertoire tpC tous les fichiers ayant n'importe quoi entre tp et .c.

Mais si on écrit mv tp??.c tpC , on déplace les fichiers contenant exactement deux caractères entre tp et .c.