Chaque commande Linux qui touche un fichier a besoin de savoir où il se trouve. Quand vous tapez cp fichier.conf /tmp/, le shell doit résoudre fichier.conf par rapport à votre position actuelle, et /tmp/ comme un emplacement fixe sur le système. Si vous confondez les deux, vous copiez le mauvais fichier, ou vous obtenez une erreur No such file or directory. Ce guide clarifie cette distinction fondamentale.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Distinguer un chemin absolu d'un chemin relatif
- Utiliser les raccourcis
.,..,~et-pour naviguer efficacement - Construire un chemin correct pour n'importe quelle commande
- Éviter les erreurs les plus courantes liées aux chemins
Chemin absolu : depuis la racine
Section intitulée « Chemin absolu : depuis la racine »Un chemin absolu commence toujours par / (la racine du système de fichiers). Il désigne un emplacement fixe, quel que soit votre répertoire courant :
cat /etc/hostnameCe chemin fonctionne identiquement que vous soyez dans /home/bob, /tmp ou n'importe où ailleurs. Le / initial signifie "pars de la racine, puis descends dans etc, puis ouvre hostname".
Exemples de chemins absolus :
/etc/ssh/sshd_config/var/log/syslog/home/bob/Documents/rapport.txt/usr/bin/lsRègle simple : si le chemin commence par /, c'est un chemin absolu.
Chemin relatif : depuis votre position actuelle
Section intitulée « Chemin relatif : depuis votre position actuelle »Un chemin relatif ne commence pas par /. Il est interprété par rapport au répertoire où vous vous trouvez (pwd) :
cd /etc/sshcat sshd_configIci, sshd_config est un chemin relatif. Le shell le résout comme /etc/ssh/sshd_config parce que vous êtes dans /etc/ssh.
Si vous changez de répertoire, le même chemin relatif pointe ailleurs :
cd /tmpcat sshd_config # Erreur ! Il n'y a pas de sshd_config dans /tmpcat: sshd_config: No such file or directoryLes raccourcis de chemin
Section intitulée « Les raccourcis de chemin »Linux propose des symboles spéciaux pour simplifier la navigation :
| Symbole | Signification | Exemple |
|---|---|---|
. | Répertoire courant | ./script.sh (exécuter un script ici) |
.. | Répertoire parent (un niveau au-dessus) | cd .. (remonter) |
~ | Votre répertoire personnel (/home/<user>) | cd ~ ou ls ~/Documents |
- | Répertoire précédent (avec cd uniquement) | cd - (retour arrière) |
., le répertoire courant
Section intitulée « ., le répertoire courant »Le point seul désigne "ici". Il est surtout utile pour :
- Exécuter un script dans le répertoire courant :
./mon-script.sh - Copier un fichier vers ici :
cp /etc/hostname .
cd /tmpcp /etc/hostname .ls hostnamehostnameLe fichier a été copié dans /tmp/ (le répertoire courant).
.., le répertoire parent
Section intitulée « .., le répertoire parent »Le double point remonte d'un niveau dans l'arborescence :
pwd/var/log/nginxcd ..pwd/var/logOn peut enchaîner les .. pour remonter de plusieurs niveaux :
cd ../../etcpwd/etcDepuis /var/log, ../../etc signifie : remonter deux niveaux (→ /), puis descendre dans etc.
~, votre home
Section intitulée « ~, votre home »Le tilde est un raccourci vers le répertoire personnel de l'utilisateur connecté. Pour l'utilisateur bob, ~ équivaut à /home/bob :
ls ~/.bashrc # /home/bob/.bashrccp fichier.txt ~/ # copier dans /home/bob/cd ~ # retourner au home-, retour au répertoire précédent
Section intitulée « -, retour au répertoire précédent »Avec cd, le tiret ramène au dernier répertoire visité :
cd /etc/sshcd /var/logcd - # retour à /etc/ssh/etc/sshC'est pratique quand vous alternez entre deux emplacements.
Absolu ou relatif : quand utiliser lequel ?
Section intitulée « Absolu ou relatif : quand utiliser lequel ? »| Situation | Préférer | Pourquoi |
|---|---|---|
| Fichier de configuration système | Absolu (/etc/ssh/sshd_config) | L'emplacement ne change jamais |
| Script automatisé | Absolu | Le script peut être lancé depuis n'importe quel répertoire |
| Manipulation de fichiers proches | Relatif (./config/app.conf) | Plus court, plus lisible |
| Documentation, guides | Absolu | Pas d'ambiguïté pour le lecteur |
| Navigation rapide au clavier | Relatif (cd .., cd src/) | Plus rapide à taper |
Résoudre un chemin : comment le shell procède
Section intitulée « Résoudre un chemin : comment le shell procède »Quand vous tapez une commande avec un chemin, le shell suit cette logique :
- Le chemin commence par
/→ chemin absolu, résolu depuis la racine - Le chemin commence par
~→ remplacé par/home/<user>, puis résolu - Sinon → chemin relatif, résolu depuis le résultat de
pwd
Exemples depuis /home/bob/Projets :
| Vous tapez | Le shell résout | Type |
|---|---|---|
/etc/hosts | /etc/hosts | absolu |
~/Documents/note.txt | /home/bob/Documents/note.txt | absolu (via ~) |
README.md | /home/bob/Projets/README.md | relatif |
./src/main.py | /home/bob/Projets/src/main.py | relatif |
../Documents | /home/bob/Documents | relatif |
../../etc | /etc | relatif |
Exercice pratique
Section intitulée « Exercice pratique »-
Vérifiez votre position :
Fenêtre de terminal pwd -
Naviguez en absolu puis en relatif :
Fenêtre de terminal cd /var/logpwdcd ../../etcpwdVous devriez être dans
/etc. -
Utilisez le tilde :
Fenêtre de terminal cd ~pwdVous êtes dans votre home.
-
Copiez un fichier avec les deux types de chemin :
Fenêtre de terminal # Chemin absolucp /etc/hostname /tmp/hostname-absolu# Chemin relatif (depuis /etc)cd /etccp hostname /tmp/hostname-relatifVérification :
Fenêtre de terminal diff /tmp/hostname-absolu /tmp/hostname-relatifAucune sortie = fichiers identiques.
-
Testez cd - :
Fenêtre de terminal cd /var/logcd /etc/sshcd -pwdVous devriez être de retour dans
/var/log.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
No such file or directory | Chemin relatif incorrect (vous n'êtes pas où vous pensez) | Vérifier avec pwd, utiliser un chemin absolu |
No such file or directory avec un chemin absolu | Faute de frappe dans le chemin | Utiliser Tab pour l'auto-complétion |
./script.sh: Permission denied | Le fichier n'est pas exécutable | chmod +x ./script.sh |
bash: cd: /etc/ssh/sshd_config: Not a directory | Vous avez donné un fichier au lieu d'un répertoire à cd | Vérifier que la cible est bien un répertoire avec ls -ld |
~ n'est pas interprété dans un script | Tilde entre guillemets doubles ou simples | Utiliser $HOME à la place de ~ dans les scripts |
Mettre en pratique
Section intitulée « Mettre en pratique »Confondre sa position réelle avec celle qu'on imagine est l'erreur de chemin la plus fréquente. Dans un shell jetable, vous atteignez les mêmes cibles en chemin absolu puis en chemin relatif, en jonglant avec .., ~ et pwd ; la validation compare vos sorties au résultat attendu pour chaque déplacement.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Un chemin absolu commence par
/, il fonctionne depuis n'importe quel répertoire. - Un chemin relatif dépend de votre position actuelle (
pwd). .= ici,..= parent,~= home,-= précédent.- Dans les scripts, préférez toujours les chemins absolus ou
$HOME. - En cas de doute,
pwdvous rappelle où vous êtes, et Tab complète les chemins.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Filtrer et transformer du texte : Extraire des informations des fichiers avec grep, cut et sort.