Le système de fichiers d'Unix


Les fichiers d'une machine Unix sont organisés en une arborescence. Les feuilles sont des fichiers ordinaires (textes, programmes, ...). Les noeuds internes sont les répertoires (ou directories). Un directory peut être vu comme un fichier spécial contenant des liens vers d'autres répertoires ou fichiers.

Un chemin dans l'arborescence s'écrit en énumérant les noeuds rencontrés avec des / comme séparateurs. On distingue des chemins absolus qui partent toujours de la racine, et des chemins relatifs qui partent d'un certain répertoire de référence. L'écriture d'un chemin absolu commence par / et, autrement, c'est un chemin relatif.
Un chemin vers un répertoire peut se terminer par un / facultatif. Le chemin / (tout seul) est un chemin absolu vers la racine de l'arborescence et, par extension, c'est le nom de ce répertoire.
À partir de tout répertoire, .. (deux points) est un chemin relatif vers le répertoire englobant (ie. le père dans la terminologie des arbres) et . (un seul) désigne le répertoire lui-même.

Home directory

Dans le système Unix, à chaque utilisateur (login) correspond un répertoire particulier, c'est son home directory dans lequel il peut construire son arborescence personnelle. Chaque utilisateur a les moyens de contrôler les droits d'accès à son arborescence personnelle.
Sur les machines de l'enseignement, les home directories résident sur un gros serveur de fichier et le protocole NFS (Network File System) permet de les rendre accessibles à la demande sur chaque machine, en les intégrant dans l'arborescence locale (à partir de /users/).

Les principales commandes de gestion des fichiers

Chaque instance de shell possède son répertoire de référence, aussi appelé répertoire courant ou répertoire de travail (working directory). Lors du lancement d'un terminal (console, xterm, ssh ou slogin), le répertoire courant est placé sur le home directory de l'utilisateur.

Certains shell comme bash permettent des raccourcis dans l'écriture d'un home directory. Ainsi, pour tout login, la chaîne ~login (collés) est un chemin absolu sur le répertoire principal de l'utilisateur identifié par ce login.
Pour un utilisateur, ~ (tout seul) suffit pour désigner son propre home directory.

pwd
La commande pwd (print working directory) affiche le répertoire courant.

cd
La commande cd (change directory) permet de changer de répertoire courant. Elle s'utilise généralement avec un argument qui donne le chemin sur le nouveau répertoire, par exemple cd / pour se placer à la racine. Utilisée sans argument, la commande cd remet le home directory comme répertoire courant.

ls
La commande ls s'utilise généralement pour lister le "contenu" d'un répertoire dont un chemin est passé en argument. Utilisée sans argument, elle liste le répertoire courant. La commande ls supporte de très nombreuses options, par exemple ls -l et ls -a sont très utiles.

mkdir
La commande mkdir (make directory) permet de créer un nouveau répertoire dont un chemin est passé en argument. Ce nouveau répertoire ne peut-être placé que dans un répertoire existant et pour lequel on dispose du droit d'écriture.

rmdir
La commande rmdir (remove directory) permet de supprimer le répertoire dont un chemin est passé en argument, seulement si ce répertoire est vide.

cp
La commande cp (copy) prend toujours au moins deux arguments qui sont des chemins et elle peut s'utiliser de deux manières.
Si le dernier argument est un chemin vers un répertoire existant, alors tous les fichiers désignés par les autres arguments sont copiés dans le répertoire.
Sinon, la commande ne prend que deux arguments et le fichier désigné par le premier argument est copié dans un fichier désigné par le second argument.

mv
La commande mv (move) s'utilise comme cp mais, au lieu de copier, elle modifie les chemins des premiers arguments, ce qui revient selon les cas à "déplacer", à "renommer" ou aux deux à la fois.

rm
La commande rm (remove) permet de supprimer le ou les fichiers arguments.

quota
La commande quota permet de connaître l'utilisation actuelle de son espace disque, cf. Gérer son quota d'espace disque .

Les expansions d'arguments

Le shell interprète certains caractères spéciaux dans les arguments avant de les passer à la commande. En fait, chaque argument qui contient de tels caractères est remplacé par une liste de tous les chemins sur des fichiers ou répertoires existants qui peuvent coïncider avec le motif défini par cet argument.
Les deux caractères spéciaux les plus utilisés sont :
  • le ? qui peut être remplacé par n'importe quel caractère,
  • l'* qui peut peut être remplacée par un suite quelconque de 0, 1 ou plusieurs caractères.

    Remarque : Le nombre d'arguments effectivement passés à la commande peut donc être différent du nombre d'arguments "écrits". Pour vérifier ce que fait exactement le shell, on peut utiliser la commande echo qui permet de voir les expansions réalisées, essayer echo * par exemple.

    Remarque : Tous les caractères peuvent se substituer à ? ou *, à l'exception du / et du . en début de chemin ou derrière un /, autrement dit, un caractère ? ou * ne peut s'expanser que pour les noms à l'intérieur d'un même répertoire et l'expansion ne couvre pas un . en début de nom. Par exemple, on se place dans son home directory par cd, pour que ce soit intéressant, et on peut comparer les résultats de echo * et echo .* qui permet de voir qu'il y a beaucoup de fichiers "cachés".


    URL: https://www.enseignement.polytechnique.fr/profs/informatique/Philippe.Chassignet/INIT/p11.html

    Pour toutes suggestions, commentaires ou remarques, email : Philippe.Chassignet@polytechnique.fr