🎯 Ce que tu sauras à la fin
L'arborescence
Savoir à quoi sert chaque grand dossier du système.
Les chemins
Se déplacer avec des chemins absolus et relatifs.
Les manipulations
Créer, copier, déplacer, renommer, supprimer.
Jokers et liens
Agir sur plusieurs fichiers d'un coup, créer des raccourcis.
Une seule arborescence : tout part de /
Sous Windows, chaque disque a sa lettre : C:, D:… Sous Linux, il n'y a qu'un seul arbre.
Il commence à la racine, notée /, et tout le reste en descend : tes fichiers, les programmes,
la configuration, et même les disques et les clés USB, qui sont « montés » quelque part dans l'arbre.
L'organisation de cet arbre suit une norme commune à presque toutes les distributions, la FHS (Filesystem Hierarchy Standard). Ce que tu apprends ici est donc valable sur Debian, Fedora ou un serveur dans le cloud.
user@ubuntu:~$ ls / bin cdrom etc lib lost+found mnt proc run snap swap.img tmp var boot dev home lib64 media opt root sbin srv sys usr
- /la racine : le sommet de l'arbre
- home/les dossiers personnels des utilisateurs
- user/ton dossier personnel, alias
~
- user/ton dossier personnel, alias
- root/le dossier personnel de l'administrateur root
- etc/la configuration du système (fichiers texte)
- usr/les programmes et leurs fichiers
- bin/les commandes :
ls,cp,date… - share/documentation, icônes, données partagées
- bin/les commandes :
- var/les données qui varient
- log/les journaux du système
- tmp/fichiers temporaires, vidés au redémarrage
- boot/le noyau et le chargeur GRUB
- dev/les périphériques, sous forme de fichiers
- proc/ sys/des fenêtres virtuelles sur le noyau
- media/ mnt/les clés USB et disques montés
- opt/les logiciels installés hors des paquets de la distribution
- home/les dossiers personnels des utilisateurs
Les dossiers à connaître par cœur
| Dossier | Rôle | Exemple à aller voir |
|---|---|---|
/home | Un sous-dossier par utilisateur. C'est le seul endroit où un utilisateur normal peut écrire librement. | ls /home |
/etc | Toute la configuration, en texte lisible. Le « panneau de contrôle » de Linux. | cat /etc/hostname |
/var/log | Les journaux : ce qui s'est passé, les erreurs. | ls /var/log |
/usr/bin | Les programmes de tous les jours. | ls /usr/bin | wc -l (combien ?) |
/tmp | Un brouillon partagé, nettoyé au démarrage. | ls /tmp |
/dev | Les périphériques : disques (sda), terminaux (tty1), et le célèbre /dev/null, le « trou noir ». | ls /dev |
/proc | N'existe pas sur le disque : le noyau y décrit le système en temps réel. | cat /proc/cpuinfo |
/bin et /usr/bin ?
Héritage des années 70 : le premier disque de l'Unix des Bell Labs était trop petit, alors les programmes ont débordé sur un
second disque, monté sur /usr. Sur les distributions récentes, ce découpage a été simplifié : /bin n'est plus
qu'un lien vers /usr/bin (tu le verras avec ls -l /bin). Les deux chemins mènent au même endroit.
Tout est fichier… mais pas le même genre de fichier
Sous Linux, un dossier est un fichier spécial qui contient une liste de noms, un disque est un fichier spécial qui donne accès au matériel…
La commande ls -l indique le type par le tout premier caractère de chaque ligne :
| Caractère | Type | Exemple |
|---|---|---|
- | Fichier ordinaire (texte, image, programme…) | /etc/hostname |
d | Dossier (directory) | /home |
l | Lien symbolique (raccourci) | /bin |
b / c | Périphérique en mode bloc (disque) / caractère (terminal, souris) | /dev/sda, /dev/tty1 |
s / p | Socket / tube nommé : des canaux de communication entre programmes | /run/… |
user@ubuntu:~$ ls -ld /home /bin /dev/sda drwxr-xr-x 3 root root 4096 oct. 22 09:12 /home lrwxrwxrwx 1 root root 7 avril 22 2024 /bin -> usr/bin brw-rw---- 1 root disk 8, 0 oct. 22 09:12 /dev/sda user@ubuntu:~$ file /etc/hostname /usr/bin/ls # file devine le contenu /etc/hostname: ASCII text /usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, ...
Sous Windows, c'est l'extension (.exe, .txt) qui dit ce qu'est un fichier. Sous Linux, elle n'est qu'une convention
pour les humains : ls n'a pas d'extension et c'est pourtant un programme. Pour connaître la vraie nature d'un fichier : file.
Chemins absolus, chemins relatifs
/, ., .. et ~Un chemin est l'adresse d'un fichier dans l'arbre. On l'écrit de deux façons :
Absolu
Commence par / : part de la racine. Fonctionne depuis n'importe où, comme une adresse postale complète.
Relatif
Ne commence pas par / : part du dossier courant. Plus court, mais dépend de l'endroit où l'on se trouve.
Les quatre symboles magiques
| Symbole | Signifie | Exemple |
|---|---|---|
/ | La racine (au début d'un chemin) ou le séparateur de dossiers | cd /etc |
. | Le dossier courant | cp /etc/hostname . (copier ici) |
.. | Le dossier parent (un niveau au-dessus) | cd .. |
~ | Ton dossier personnel | cd ~/Documents |
Se déplacer : pwd et cd
user@ubuntu:~$ pwd /home/user user@ubuntu:~$ cd Documents # relatif : depuis /home/user user@ubuntu:~/Documents$ cd /var/log # absolu : depuis la racine user@ubuntu:/var/log$ cd .. # remonter d'un niveau user@ubuntu:/var$ cd - # revenir au dossier précédent /var/log user@ubuntu:/var/log$ cd # sans argument : retour à la maison user@ubuntu:~$
Regarde l'invite : la partie bleue affiche le dossier courant. Elle te dit toujours où tu es.
Au quotidien, le relatif va plus vite. Dans les scripts, les tâches planifiées et les fichiers de configuration, utilise toujours des chemins absolus : le dossier courant y est imprévisible.
Lister avec ls
| Commande | Effet |
|---|---|
ls | Liste le dossier courant |
ls -l | Format long : droits, propriétaire, taille, date |
ls -a | Inclut les fichiers cachés (ceux dont le nom commence par un point) |
ls -lh | Tailles lisibles : 4,0K, 12M, 1,5G |
ls -lt / ls -ltr | Trié par date, du plus récent / du plus ancien |
ls -lS | Trié par taille |
ls -R | Récursif : descend dans tous les sous-dossiers |
ls -ld dossier | Infos sur le dossier lui-même, pas sur son contenu |
Lire une ligne de ls -l
-rw-r--r--type + droitsmodule 041liensnb de nomsuser userpropriétaire, groupeà qui ?2,1Ktailleavec -hoct. 22 10:41datedernière modif.notes.txtnomLes fichiers cachés
Tout fichier dont le nom commence par un point est caché : .bashrc, .config/… Ce n'est pas une
protection, juste une façon de ranger la configuration personnelle pour qu'elle n'encombre pas l'affichage. ls -a les révèle,
tout comme Ctrl + H dans le gestionnaire de fichiers.
user@ubuntu:~$ ls -a . .. .bash_history .bash_logout .bashrc .cache .config .local .profile Bureau Documents ...
Tu remarques . et .. en tête de liste : ce sont de vraies entrées, présentes dans chaque dossier.
La commande tree dessine l'arborescence d'un dossier. Installe-la avec sudo apt install tree,
puis essaie tree -L 2 ~ (deux niveaux de profondeur).
Créer, copier, déplacer, supprimer
| Commande | Action | Options utiles |
|---|---|---|
touch fichier | Crée un fichier vide (ou met à jour sa date) | |
mkdir dossier | Crée un dossier | -p : crée aussi les parents manquants |
cp source destination | Copie | -r : dossiers entiers · -i : demande avant d'écraser · -v : affiche ce qui est fait |
mv source destination | Déplace ou renomme | -i : demande avant d'écraser |
rm fichier | Supprime un fichier | -r : dossiers · -i : confirmation · -f : force, sans question |
rmdir dossier | Supprime un dossier vide |
user@ubuntu:~$ mkdir -p labo/notes/2026 # crée les 3 niveaux d'un coup user@ubuntu:~$ cd labo user@ubuntu:~/labo$ touch idees.txt user@ubuntu:~/labo$ cp idees.txt notes/ # copier dans un dossier user@ubuntu:~/labo$ mv idees.txt brouillon.txt # renommer user@ubuntu:~/labo$ mv brouillon.txt notes/2026/ # déplacer user@ubuntu:~/labo$ cp -r notes sauvegarde # copier tout un dossier user@ubuntu:~/labo$ rm -ri sauvegarde # supprimer, en confirmant chaque élément rm : descendre dans le répertoire 'sauvegarde' ? o ...
Il n'y a pas de commande « renommer » : mv ancien nouveau fait le travail. Si la destination est un dossier existant,
le fichier y est déplacé ; sinon, il prend ce nouveau nom.
rm ne pardonne pas
Pas de corbeille dans le terminal : un fichier supprimé avec rm est perdu. rm -rf supprime tout un dossier, sans
poser la moindre question, et avec sudo il peut détruire le système entier. Trois réflexes :
- relire la commande avant Entrée, surtout s'il y a un
*ou un/; - vérifier avec
lsce que tu vas supprimer :ls dossier/*.logavantrm dossier/*.log; - dans la VM, prendre un instantané avant toute manipulation risquée.
Les jokers : agir sur plusieurs fichiers d'un coup
Le shell remplace certains caractères spéciaux par la liste des fichiers qui correspondent, avant de lancer la commande :
| Joker | Correspond à | Exemple |
|---|---|---|
* | N'importe quelle suite de caractères (même vide) | ls *.txt : tous les fichiers .txt |
? | Exactement un caractère | ls photo?.jpg : photo1.jpg, photoA.jpg… |
[abc], [0-9] | Un caractère parmi une liste ou un intervalle | ls rapport[1-3].pdf |
{a,b,c} | Génère chaque variante (expansion d'accolades) | mkdir -p projet/{src,doc,tests} |
user@ubuntu:~/labo$ touch jour{1..5}.log # crée jour1.log … jour5.log user@ubuntu:~/labo$ echo jour[2-4].log # astuce : echo montre ce que le joker donnera jour2.log jour3.log jour4.log user@ubuntu:~/labo$ rm jour*.log
echo
Avant un rm ou un mv avec un joker, remplace la commande par echo : tu vois exactement la liste
de fichiers que le shell va lui passer. Zéro risque.
Les liens : un fichier, plusieurs noms
Pour comprendre les liens, il faut savoir qu'un nom de fichier n'est qu'une étiquette. Le contenu réel est décrit par un inode, une fiche numérotée qui indique où sont les données sur le disque. Un dossier, c'est une liste de couples « nom → numéro d'inode ».
user@ubuntu:~/labo$ echo "Linux" > notes.txt user@ubuntu:~/labo$ ln notes.txt copie-dure # lien physique user@ubuntu:~/labo$ ln -s notes.txt raccourci # lien symbolique user@ubuntu:~/labo$ ls -li # -i affiche le numéro d'inode 1342 -rw-rw-r-- 2 user user 6 oct. 22 11:02 copie-dure 1342 -rw-rw-r-- 2 user user 6 oct. 22 11:02 notes.txt 1377 lrwxrwxrwx 1 user user 9 oct. 22 11:02 raccourci -> notes.txt
Les deux premiers partagent le même inode, et le compteur de liens vaut 2. Le lien symbolique a son propre inode et affiche sa cible avec ->.
| Lien physique | Lien symbolique | |
|---|---|---|
| Commande | ln cible nom | ln -s cible nom |
| Vers un dossier | non | oui |
| Vers un autre disque | non | oui |
| Si on supprime l'original | le contenu reste accessible | le lien est cassé |
| Usage courant | Rare, sauvegardes | Partout : /bin, configurations, versions de logiciels |
Glossaire du module
- Racine
- Le dossier
/, sommet de l'arborescence. - FHS
- La norme qui fixe le rôle de chaque dossier du système.
- Dossier courant
- Le dossier où l'on se trouve (
pwd), noté.. - Dossier parent
- Le dossier au-dessus, noté
... - Dossier personnel
/home/utilisateur, noté~.- Chemin absolu
- Chemin qui part de la racine : commence par
/. - Chemin relatif
- Chemin qui part du dossier courant.
- Fichier caché
- Fichier dont le nom commence par un point.
- Joker (glob)
- Caractère spécial (
*,?,[ ]) remplacé par le shell par les noms correspondants. - Inode
- La fiche qui décrit un fichier et localise ses données sur le disque.
- Lien physique
- Un nom supplémentaire pour le même inode.
- Lien symbolique
- Un raccourci qui contient le chemin de sa cible.
🧠 Quiz : as-tu tout retenu ?
/etc contient la configuration, en fichiers texte. /var contient les données variables comme les journaux././var/log. Où t'emmène cd ../.. ?.. remonte à /var, le second à la racine /.a.txt en b.txt ?mv déplace et renomme. cp créerait une copie et laisserait l'original.mkdir labo/a/b échoue car labo/a n'existe pas. Quelle option corrige ça ?mkdir -p crée tous les dossiers parents manquants.ls *.jpg ?*.jpg par les noms correspondants du dossier courant.-a (all). Attention : -h signifie human-readable (tailles lisibles).🚀 Mission pratique
À faire dans la machine virtuelle
Coche chaque étape une fois faite : sa correction s'affiche juste en dessous.
- ✅ Correction
$ cd / $ ls $ cd /etc $ pwd /etc $ cd /var/log && ls $ cd /dev && ls
- ✅ Correction
$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.x LTS" ...
Le chemin commence par
/: il fonctionne quel que soit le dossier courant. - ✅ Correction
$ cd $ cd ~ $ cd /home/user # ou en relatif depuis /var/log : $ cd ../../home/user
- ✅ Correction
$ ls -a ~ . .. .bash_history .bashrc .cache .config .profile Bureau Documents ...
- ✅ Correction
$ mkdir -p ~/labo/projet/{src,doc,tests} $ ls ~/labo/projet doc src tests
- ✅ Correction
$ cd ~/labo/projet $ touch src/main.sh doc/notes.txt $ cp doc/notes.txt doc/notes.bak $ mv doc/notes.bak doc/ancien.txt $ mv doc/ancien.txt tests/ $ ls * doc: notes.txt src: main.sh tests: ancien.txt
- ✅ Correction
$ cd ~/labo && touch jour{1..9}.log $ echo jour[3-6].log jour3.log jour4.log jour5.log jour6.log $ rm jour[3-6].log $ ls jour1.log jour2.log jour7.log jour8.log jour9.log projet
- ✅ Correction
$ echo "test" > cible.txt $ ln cible.txt dur.txt $ ln -s cible.txt sym.txt $ ls -li 1351 -rw-rw-r-- 2 user user 5 ... cible.txt 1351 -rw-rw-r-- 2 user user 5 ... dur.txt 1352 lrwxrwxrwx 1 user user 9 ... sym.txt -> cible.txt $ rm cible.txt $ cat dur.txt test $ cat sym.txt cat: sym.txt: Aucun fichier ou dossier de ce nom
Même inode pour
cible.txtetdur.txt: le contenu survit. Le lien symbolique, lui, est cassé (affiché en rouge parls). - ✅ Correction
$ ls -l /bin lrwxrwxrwx 1 root root 7 avril 22 2024 /bin -> usr/bin
- ✅ Correction
$ sudo apt install tree $ tree ~/labo $ rm -ri ~/labo rm : descendre dans le répertoire '/home/user/labo' ? o ...
Réponds
o(oui) à chaque question. Pour ne pas confirmer chaque fichier,rm -rIne pose qu'une seule question.
💬 Questions fréquentes
Les questions qui reviennent le plus souvent sur ce module, avec leurs réponses.
Où sont passés « Bureau », « Documents »… dans le terminal ?
Ce sont des dossiers ordinaires de ton dossier personnel : ~/Bureau, ~/Documents, ~/Téléchargements.
Leur nom suit la langue choisie à l'installation : sur un système en anglais, ce serait ~/Desktop, ~/Downloads…
Astuce : les accents se tapent mal ? Commence le nom et utilise Tab.
« Permission denied » quand je crée un fichier dans /etc ou à la racine
C'est normal et c'est une protection : en dehors de ton dossier personnel (et de /tmp), seul root peut écrire.
On verra au module 04 comment fonctionnent ces droits, et quand utiliser sudo à bon escient.
Comment récupérer un fichier supprimé avec rm ?
En pratique, on ne peut pas : rm ne passe pas par la corbeille. D'où l'importance des sauvegardes (module 15)
et, dans une VM, des instantanés. Si tu veux une corbeille en ligne de commande, le paquet trash-cli fournit
la commande trash.