Contactez-nous

Chemins absolus vs chemins relatifs : comprendre et utiliser les deux

Comprenez la différence cruciale entre chemins absolus et relatifs sous Linux. Apprenez à les utiliser pour une navigation et une gestion de fichiers précises.

Indiquer une destination : l'importance des chemins d'accès

Lorsque vous travaillez avec des fichiers et des répertoires en ligne de commande sous Linux, vous devez constamment spécifier leur emplacement. Que ce soit pour naviguer avec cd, lister avec ls, copier avec cp, ou toute autre opération, le système a besoin de savoir précisément où trouver ou placer les éléments concernés. Pour cela, on utilise des "chemins d'accès" (ou simplement "chemins"). Il existe deux manières principales de spécifier ces chemins : les chemins absolus et les chemins relatifs. Comprendre la distinction entre ces deux types de chemins et savoir quand utiliser l'un ou l'autre est fondamental pour une utilisation efficace et sans erreur du shell Linux.

Une mauvaise compréhension de cette distinction est une source fréquente d'erreurs pour les débutants, menant à des messages comme "Fichier ou dossier non trouvé". Ce sous-chapitre vise à clarifier ces concepts, à vous montrer comment ils fonctionnent et à vous donner les clés pour les utiliser correctement dans vos commandes quotidiennes.

Nous allons définir chaque type de chemin, illustrer leur utilisation avec des exemples concrets, et discuter des avantages et des contextes d'utilisation de chacun.

Le chemin absolu : une adresse complète et sans ambiguïté

Un chemin absolu (ou chemin complet) spécifie l'emplacement d'un fichier ou d'un répertoire en partant toujours de la racine du système de fichiers, symbolisée par un slash /. Peu importe où vous vous trouvez actuellement dans l'arborescence (votre répertoire de travail courant), un chemin absolu pointera toujours vers le même emplacement.

Caractéristiques principales d'un chemin absolu :

  • Il commence toujours par un slash /.
  • Il est non ambigu : il décrit une unique localisation dans le système de fichiers.
  • Il est indépendant de votre répertoire de travail courant.

Exemples de chemins absolus :

  • /home/utilisateur/Documents/rapport.txt : Pointe vers le fichier rapport.txt dans le sous-répertoire Documents du répertoire personnel de l'utilisateur utilisateur.
  • /etc/nginx/nginx.conf : Pointe vers le fichier de configuration de Nginx.
  • /var/log/ : Pointe vers le répertoire des logs système.
  • /usr/bin/python3 : Pointe vers l'exécutable de Python 3.

Quand utiliser un chemin absolu ?

  • Lorsque vous voulez être certain de pointer vers un fichier ou un répertoire spécifique, quel que soit votre emplacement actuel.
  • Dans les scripts, pour éviter toute ambiguïté, surtout si le script peut être lancé depuis différents endroits.
  • Pour des fichiers de configuration système ou des exécutables dont l'emplacement est fixe et connu.

Par exemple, si vous voulez copier le fichier /etc/hosts dans votre répertoire Documents actuel, et que votre répertoire courant est /home/moi/Documents, vous pourriez taper :

cp /etc/hosts .

(Ici, . est un chemin relatif signifiant "le répertoire courant", nous y viendrons). L'important est que /etc/hosts est un chemin absolu qui désigne sans équivoque le fichier source.

Le chemin relatif : une direction depuis votre position actuelle

Un chemin relatif spécifie l'emplacement d'un fichier ou d'un répertoire par rapport à votre répertoire de travail courant (celui affiché par pwd). Il ne commence pas par un slash /.

Caractéristiques principales d'un chemin relatif :

  • Il ne commence jamais par un slash /. S'il y a un slash, c'est pour séparer des noms de répertoires à l'intérieur du chemin relatif (ex: Projets/site_web).
  • Sa signification dépend de votre répertoire de travail courant. Le même chemin relatif pointera vers des endroits différents si vous changez de répertoire courant.
  • Il est souvent plus court à taper si la cible est proche de votre position actuelle.

Symboles spéciaux utilisés dans les chemins relatifs :

  • . (un seul point) : Désigne le répertoire courant lui-même.
  • .. (deux points) : Désigne le répertoire parent (celui juste au-dessus dans l'arborescence).

Exemples de chemins relatifs :

  • Supposons que votre répertoire courant (pwd) soit /home/utilisateur/. Alors :
    • Documents/rapport.txt pointe vers /home/utilisateur/Documents/rapport.txt.
    • Images pointe vers /home/utilisateur/Images/.
    • ../autre_utilisateur/Public pointe vers /home/autre_utilisateur/Public (si autre_utilisateur est au même niveau que utilisateur sous /home).
    • ./mon_script.sh est équivalent à mon_script.sh et pointe vers un script dans le répertoire courant.
  • Si votre répertoire courant est /var/log/nginx/ :
    • error.log pointe vers /var/log/nginx/error.log.
    • ../apache2/access.log pointe vers /var/log/apache2/access.log.

Quand utiliser un chemin relatif ?

  • Pour accéder à des fichiers ou des répertoires proches de votre position actuelle, car c'est plus court et plus pratique.
  • Dans les scripts qui opèrent sur des fichiers situés dans la même structure de répertoires que le script lui-même, rendant le script plus portable (il fonctionnera même si tout l'ensemble de répertoires est déplacé ailleurs).
  • Lorsque vous naviguez fréquemment dans une arborescence de projet.

Par exemple, si vous êtes dans /home/utilisateur/Projets/MonSite et que vous voulez lister le contenu du sous-répertoire css :

ls css

Ou si vous voulez remonter d'un niveau et aller dans un répertoire frère nommé AutreProjet :

cd ../AutreProjet

Combiner et choisir intelligemment : la pratique des chemins

La clé est de choisir le type de chemin le plus approprié à la situation. Il n'y a pas de "meilleur" type de chemin en soi ; tout dépend du contexte.

Une astuce : le tilde (~) est un raccourci qui est interprété par le shell comme le chemin absolu de votre répertoire personnel. Ainsi, ~/Documents est équivalent à /home/votre_nom_utilisateur/Documents. C'est une forme de chemin absolu très pratique.

De même, ~utilisateur_x/Public pointerait vers le répertoire Public dans le répertoire personnel de utilisateur_x.

Considérons un exemple pour illustrer. Vous êtes dans /home/moi/Photos/Vacances_2023/ et vous voulez copier un fichier logo.png qui se trouve dans /home/moi/Projets/SiteWeb/images/ vers votre répertoire Vacances_2023.

Avec des chemins absolus :

cp /home/moi/Projets/SiteWeb/images/logo.png /home/moi/Photos/Vacances_2023/

Avec des chemins relatifs (et le point pour la destination) :

cp ../../Projets/SiteWeb/images/logo.png .

Dans cet exemple, si vous êtes sûr de votre position, le chemin relatif pour la source peut être plus rapide à taper si vous utilisez l'auto-complétion (Tab). Le point (.) comme destination est un chemin relatif très courant signifiant "ici même".

L'utilisation intensive de la touche Tab pour l'auto-complétion des chemins est fortement recommandée. Non seulement cela accélère la saisie, mais cela réduit aussi considérablement les erreurs de frappe et vous aide à vérifier que le chemin que vous construisez existe réellement. Si Tab ne complète pas comme prévu, c'est souvent un signe que vous faites une erreur dans le chemin.

En résumé :

  • Chemin absolu : commence par /, toujours la même destination. Idéal pour les scripts robustes et les emplacements fixes.
  • Chemin relatif : ne commence pas par /, dépend de votre position. Idéal pour la navigation locale et la portabilité de structures de projet.

Avec de la pratique, jongler entre chemins absolus et relatifs deviendra une seconde nature, rendant votre navigation et votre gestion de fichiers en ligne de commande beaucoup plus fluides et précises.