Naviguer dans l’arborescence
Naviguer dans l’arborescence et comprendre les chemins absolus et relatifs.
Objectifs
À la fin de cette leçon, vous saurez :
- représenter mentalement le système de fichiers de Linux comme un arbre unique ;
- vous déplacer entre les répertoires avec
cdet savoir toujours où vous êtes grâce àpwd; - écrire un chemin absolu ou relatif selon la situation, et prédire vers quoi il pointe ;
- utiliser la complétion avec Tab pour aller plus vite et faire moins de fautes.
🔗 Pour vous rafraîchir la mémoire : le terminal et le prompt
Un système de fichiers, c'est une arborescence
Sous Linux, tout — documents, programmes, configuration, périphériques — vit dans un seul arbre qui démarre à la racine, notée /. Contrairement à Windows, il n'y a pas plusieurs « lecteurs » (C:\, D:\) : il n'existe qu'un seul sommet, et tout le reste pend en dessous.
/
├── home/ ← les dossiers personnels des utilisateurs
│ └── cours/
│ └── cours/ ← votre espace de travail sur la VM
├── etc/ ← fichiers de configuration du système
├── usr/ ← programmes installés (dont /usr/bin : les commandes)
├── var/ ← données variables : journaux, caches…
└── tmp/ ← fichiers temporaires, vidés aux redémarrages
Deux vocabulaires avant d'avancer :
- un dossier (ou répertoire) est un conteneur : il peut contenir des fichiers et d'autres dossiers ;
- un fichier est un ensemble de données : texte, code, image, programme.
Le vocabulaire de l'arbre se transpose directement : la racine / a des enfants (home, etc…), chaque dossier peut avoir des descendants, et le dossier au-dessus du courant s'appelle le parent. Cette image d'arbre n'est pas décorative : elle sert littéralement à calculer les chemins dans la suite de cette leçon.
Savoir où l'on se trouve
Chaque shell possède un répertoire de travail courant — sa position actuelle dans l'arbre. C'est depuis cette position que toutes les commandes sans chemin explicite travailleront. Interrogez-la :
$ pwd
/home/cours/cours
La réponse commence par / : c'est un chemin absolu, exprimé depuis la racine. Il désigne le même endroit quel que soit l'endroit d'où on le lit — comme une adresse postale complète.
Détail important : le répertoire courant appartient au shell, pas à la machine. Si vous ouvrez deux terminaux en parallèle, chacun a sa propre position : se déplacer dans l'un ne déplace pas l'autre.
Se déplacer de répertoire en répertoire
La commande cd (change directory) change la position du shell :
$ cd /home/cours
$ pwd
/home/cours
Rien ne s'affiche : sous Linux, « pas de nouvelles, bonnes nouvelles ». Une commande silencieuse a réussi ; c'est pwd qui confirme où l'on est désormais. Vérifiez aussi votre prompt : il a changé du même coup.
Pour revenir dans votre répertoire personnel :
$ cd ~
$ pwd
/home/cours
Le symbole ~ est un raccourci que le shell remplace par votre dossier personnel (/home/cours). cd sans argument fait la même chose : c'est le geste « ramène-moi chez moi ».
Trois raccourcis universels à connaître par cœur :
| Symbole | Signification | Exemple |
|---|---|---|
. | le répertoire courant lui-même | cd . ne déplace nulle part |
.. | le parent du répertoire courant (celui qui le contient) | cd .. remonte d'un niveau |
~ | votre répertoire personnel | cd ~ rentre à la maison |
Essayez et observez le prompt :
$ cd ..
$ pwd
/home
$ cd .
$ pwd
/home
cd . ne change rien : cohérent, puisque . désigne l'endroit où l'on est déjà. Ces symboles ne sont pas des astuces de cd : ce sont de vraies entrées présentes dans chaque répertoire (vous les verrez avec ls -a), utilisables partout où un chemin est attendu — dans cp, rm, etc.
Chemins absolus et relatifs
Il y a deux façons de désigner un emplacement, et savoir choisir est l'aptitude centrale de cette leçon.
Un chemin absolu commence par / : il part de la racine et décrit toute la descente jusqu'à la cible. /home/cours/docs veut dire : racine → home → cours → docs. Lisible depuis n'importe quelle position, il ne peut pas être mal interprété.
Un chemin relatif ne commence pas par / : il est interprété depuis le répertoire courant. C'est un itinéraire « d'ici vers là-bas », comme quand on dit « prends la première à droite » : ça dépend d'où vous êtes.
Suivons le même déplacement écrit des deux façons :
$ pwd
/home/cours
$ cd docs # chemin relatif : descendre dans le sous-dossier docs
$ pwd
/home/cours/docs
$ cd /home/cours/docs # chemin absolu : même destination, écrite en entier
Maintenant, le mécanisme de résolution, étape par étape — c'est lui qu'il faut comprendre, pas mémoriser. Le shell transforme un chemin relatif en absolu en concaténant : répertoire courant + / + chemin relatif.
répertoire courant : /home/cours
chemin relatif : docs/projet.txt
résolution : /home/cours + / + docs/projet.txt
= /home/cours/docs/projet.txt
Et si le chemin relatif contient .., on remonte d'abord d'un cran pour chaque .. :
position courante : /etc
chemin relatif : ../home
résolution : /etc/.. = / , puis / + home
= /home
Entraînez-vous à prédire avant de taper — devinez mentalement le résultat de chaque pwd :
cd /
pwd # prédiction ?
cd home
pwd # prédiction ?
cd ..
pwd # prédiction ?
cd home/cours
pwd # prédiction ?
Réponses : /, /home, /, /home/cours. Chaque ligne est vérifiable par simple lecture de l'arbre.
Quand utiliser laquelle ? Règle pratique :
- relatif pour travailler autour de soi (« le fichier voisin »), car c'est plus court ;
- absolu pour viser un endroit précis du système (
/etc/nginx/nginx.conf) ou dans un script, car il ne dépend pas de la position.
La complétion avec Tab : le réflexe qui change tout
Taper des chemins à la main est lent et source de fautes de frappe. Le shell offre une aide majeure : la touche Tab complète automatiquement.
Tapez cd /ho puis Tab : le shell complète en cd /home/. Ajoutez co puis Tab encore : cd /home/cours/. Deux frappes au lieu d'une vingtaine, et zéro faute possible : le shell ne propose que ce qui existe réellement.
Comportements utiles :
- si plusieurs complétions sont possibles, un premier Tab reste muet ; un deuxième Tab affiche la liste des possibilités ;
- la complétion marche aussi sur les noms de commandes :
whoa+ Tab devientwhoami.
Prenez dès maintenant l'habitude : on ne tape presque jamais un chemin complet. C'est aussi un outil de vérification — si Tab refuse de compléter, c'est probablement que le nom ou le chemin est faux.
Voir ce qui nous entoure
ls liste le contenu du répertoire courant, ou de celui qu'on lui passe en argument :
$ ls # les entrées du répertoire courant
$ ls /etc # les entrées d'un autre répertoire (argument = chemin)
$ ls -la # détails : permissions, propriétaire, taille, date
Avec -l (liste longue), chaque ligne se lit ainsi — ne retenez que les grandes zones pour l'instant :
drwxr-xr-x 2 cours cours 4096 Jan 12 09:14 docs
│ │ │ │ │ └─ date de dernière modification
│ │ │ └─────┴─ propriétaire et groupe
│ └─ taille en octets
└─ type et droits (d = dossier)
Avec -a (all), apparaissent les entrées cachées, celles dont le nom commence par un point : .bashrc (configuration de votre shell), mais aussi . et .. eux-mêmes — la preuve que ces deux symboles existent vraiment dans chaque répertoire.
Petit exercice mental : après cd /etc, que liste ls ../home ? Résolvons : .. vu depuis /etc vaut / (son parent), donc ../home vaut /home. La commande liste donc le contenu de /home, sans quitter /etc.
Exercice
- Allez dans
/homepuis revenez à votre répertoire personnel en deux commandes maximum. - Affichez votre position à chaque étape avec
pwd. - En une seule commande, listez le contenu de
/etcsans quitter votre répertoire personnel. - Faites
cd /home/cours, créez un fichier avecnano mini.txt(enregistrez avec Ctrl+O puis Entrée, quittez avec Ctrl+X), puis retrouvez ce fichier depuis/tmpsans utiliser~. - Prédictions : étant dans
/usr/bin, que valent..,../..et../local? Vérifiez avecls.
Résumé
- Tout vit dans un seul arbre dont la racine est
/; dossiers = conteneurs, fichiers = données. pwddonne la position absolue ;cddéplace le shell (et seulement lui).- Absolu : part de
/, invariable. Relatif : part d'ici, se calcule en concaténant —..remonte,.reste. ~est la maison, Tab complète tout seul,ls -lamontre tout, cachés compris.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Réponses détaillées
Exercice 1.
cd /home
cd ~
Une seule commande aurait suffi depuis n'importe où : cd ~ (ou simplement cd).
Exercice 2. Insérons pwd entre chaque déplacement :
$ cd /home
$ pwd
/home
$ cd ~
$ pwd
/home/cours
Le prompt affiche la même information en abrégé : ~/.
Exercice 3.
ls /etc
L'argument est un chemin absolu : la commande travaille sur /etc sans que votre shell bouge. Un pwd juste après le confirme : vous êtes toujours chez vous. C'est la différence entre regarder ailleurs (argument chemin) et aller ailleurs (cd).
Exercice 4. Après création, placez-vous ailleurs puis retrouvez le fichier :
$ cd /tmp
$ ls /home/cours
cours mini.txt
Sans ~, il fallait écrire le chemin absolu /home/cours. Variante relative depuis /tmp : ls ../home/cours — remontée à la racine puis redescente. nano crée toujours le fichier dans le répertoire courant : c'est parce que vous étiez dans /home/cours au moment de la création que le fichier s'y trouve.
Exercice 5. Depuis /usr/bin :
..vaut/usr(le parent) ;../..vaut/(parent du parent : la racine) ;../localvaut/usr/local(remonte à/usrpuis redescend danslocal).
Vérification sans se déplacer :
$ ls .. # contenu de /usr : bin, local, share...
$ ls ../.. # contenu de / : bin, boot, etc, home...
$ ls ../local # contenu de /usr/local