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 |
À 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.