diff --git a/src/bases/fichiers.md b/src/bases/fichiers.md new file mode 100644 index 0000000..b6b8400 --- /dev/null +++ b/src/bases/fichiers.md @@ -0,0 +1,129 @@ +# Système de fichiers + +## Tout est fichier + +Sous Linux, tout est fichier: + +- les fichiers (évidemment) +- les répertoires +- d'autres choses plus avancées (*socket*, *devices*, ...) + +Dans la suite, nous distinguerons les fichiers des répertoires. + +## Fichiers cachés + +Par défaut, `ls` affiche tous les fichiers visibles. + +```bash +$ ls +Documents examples.desktop Modèles Téléchargements Vidéos +Bureau Images Musique Public snap +``` + +Les fichiers cachés sont ceux dont le nom commence par un point `.`. +Même s'ils sont présent dans le répertoire, `ls` ne les affiche pas. + +Par exemple: `.bashrc` + +```bash +$ ls .bashrc +.bashrc +``` + +L'option `-a` (pour *all*) de `ls` permet d'afficher aussi les fichiers cachés. + +```bash +$ ls -a +. Documents examples.desktop Modèles Téléchargements +.. Vidéos Bureau Images Musique Public +.bashrc snap +``` + +## Chemins relatifs + +`ls -a` commence par afficher les « fichiers » `.` et `..`. +Ils représentent respectivement le répertoire courant (`.`) et son répertoire +parent (`..`). + +Ainsi, si vous voulez connaître les fichiers contenus dans le répertoire parent, +vous pouvez utiliser le *chemin relatif* `..`. + +```bash +$ ls .. +parmentf +houdry +``` + +En l'occurrence, et en supposant qu'on se trouve dans le répertoire par défaut +(aussi appelé *home directory*), l'appel à `ls ..` montre les répertoires par +défaut de tous les utilisateurs de l'ordinateur. + +De même, `ls .` est strictement équivalent à `ls`, il liste les fichiers du +répertoire courant. + +Mais on peut composer un chemin en joignant des noms de répertoires avec le +caractère `/`. + +> 📗 À noter: sous Windows, le caractère correspondant est `\`. + +Au minimum `ls ./` est strictement équivalent à `ls .` et donc à `ls`. + +Mais on peut aller plus loin en faisant `ls ./Documents`, voire `ls +./Documents/Unix`. + +Comme `..` est un chemin relatif, on peut aussi l'utiliser. +Par exemple `ls ../houdry/Documents` permet de lister les fichiers du répertoire +`Documents` de l'utilisateur Unix `houdry`. + +> 💡 Les chemins relatifs sont utilisables comme paramètres de toutes les +> commandes attendant un chemin de fichier (typiquement `cat`, `cp`, `mv`, `rm`, +> ...) +> +> 💡 Les chemins relatifs évitent d'avoir à utiliser la commande `cd` pour se +> mettre dans le répertoire où se trouve le(s) fichier(s) à utiliser. + +## Chemins absolus + +Un chemin absolu est un chemin qui précise la localisation d'un fichier depuis +la racine de l'arborescence des fichiers. + +Il commence obligatoirement par le caractère `/`. + +> ⚠️ Tout chemin de fichier commençant par un caractère différent de `/` +> est un chemin relatif ! +> Il est relatif au répertoire courant. + +Sur un système Ubuntu (distribution Linux très répandue), voici les répertoires +présents à la racine. + +```bash +$ ls / +bin dev initrd.img lib64 mnt root snap tmp vmlinuz +boot etc initrd.img.old lost+found opt run srv usr vmlinuz.old +cdrom home lib media proc sbin sys var +``` + +Ces répertoires peuvent varier selon les distributions, mais globalement: + +- `bin`: contient des binaires (des exécutables, dont la plupart des commandes déjà citées) +- `cdrom`: permet d'accéder éventuellement à un CD-ROM dans son lecteur +- `etc`: des fichiers liés aux applications du système (configuration) +- `lib`: des bibliothèques logicielles diverses +- `proc`: des fichiers dynamiques liés à l'exécution du système (essayer `cat /proc/uptime`) +- `home`: les répertoires par défaut des utilisateurs du système +- `opt`: des logiciels alternatifs +- `sbin`: des commandes système +- `tmp`: fichiers temporaires (nettoyé à chaque démarrage) +- `var`: données liées à certains logiciels + +`pwd` donne le chemin courant *absolu*: + +```bash +$ pwd +/home/parmentf +``` + +Ainsi le répertoire `./Documents` à partir du répertoire par défaut de +`parmentf` a pour chemin absolu `/home/parmentf/Documents`. +L'avantage est qu'il univoque, alors qu'un chemin relatif dépend entièrement du +répertoire où on se trouve quand on l'utilise.