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.