Comment vérifier si un lien symbolique existe sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à déterminer si un fichier sous Linux est un lien symbolique. Vous explorerez trois méthodes différentes pour y parvenir.

Tout d'abord, vous utiliserez la commande test avec l'option -L pour vérifier programmatiquement le type de fichier. Ensuite, vous vérifierez les informations sur le lien en examinant la sortie de la commande ls -l. Enfin, vous apprendrez à résoudre le fichier ou le répertoire cible vers lequel pointe un lien symbolique en utilisant la commande readlink.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") subgraph Lab Skills linux/echo -.-> lab-558768{{"Comment vérifier si un lien symbolique existe sous Linux"}} linux/test -.-> lab-558768{{"Comment vérifier si un lien symbolique existe sous Linux"}} linux/ls -.-> lab-558768{{"Comment vérifier si un lien symbolique existe sous Linux"}} linux/ln -.-> lab-558768{{"Comment vérifier si un lien symbolique existe sous Linux"}} end

Tester un lien symbolique avec test -L

Dans cette étape, vous apprendrez à tester si un fichier est un lien symbolique en utilisant la commande test avec l'option -L.

Un lien symbolique (ou symlink) est un type spécial de fichier qui pointe vers un autre fichier ou répertoire. Imaginez-le comme un raccourci sous Windows. Lorsque vous accédez à un lien symbolique, vous accédez en réalité au fichier ou au répertoire vers lequel il pointe.

Tout d'abord, créons un simple fichier. Assurez-vous d'être dans le répertoire ~/project.

echo "This is the original file." > original_file.txt

Maintenant, créons un lien symbolique vers original_file.txt. Nous nommerons le lien symbolique my_symlink.

ln -s original_file.txt my_symlink
  • ln : La commande utilisée pour créer des liens.
  • -s : Cette option indique à ln de créer un lien symbolique (au lieu d'un lien physique).
  • original_file.txt : Le fichier cible vers lequel le lien symbolique pointera.
  • my_symlink : Le nom du lien symbolique que nous créons.

Maintenant, nous pouvons utiliser la commande test pour vérifier si my_symlink est un lien symbolique. La commande test est utilisée pour vérifier les types de fichiers et comparer des valeurs. Elle ne produit pas de sortie directement, mais son statut de sortie indique le succès (0) ou l'échec (non nul).

Nous pouvons combiner test avec echo pour voir le résultat.

test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
  • test -L my_symlink : Cela vérifie si my_symlink est un lien symbolique.
  • && : C'est un opérateur logique ET. Si la commande avant && réussit (statut de sortie 0), la commande après && est exécutée.
  • || : C'est un opérateur logique OU. Si la commande avant || échoue (statut de sortie non nul), la commande après || est exécutée.

Étant donné que my_symlink est effectivement un lien symbolique, la sortie devrait être :

my_symlink is a symbolic link

Maintenant, testons un fichier ordinaire, comme original_file.txt :

test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"

La sortie devrait être :

original_file.txt is NOT a symbolic link

Cela confirme que test -L identifie correctement les liens symboliques.

Vérifier le lien avec la sortie de ls -l

Dans cette étape, vous apprendrez à identifier les liens symboliques et leurs cibles en utilisant la commande ls -l.

La commande ls est utilisée pour lister les fichiers et les répertoires. L'option -l fournit un format de liste détaillée ("long listing"), qui inclut des informations détaillées sur chaque fichier, telles que les autorisations, le propriétaire, la taille et la date de modification.

Lorsque vous utilisez ls -l sur un lien symbolique, il affiche le lien lui-même et montre également vers quoi il pointe.

Assurez-vous d'être dans le répertoire ~/project où vous avez créé original_file.txt et my_symlink à l'étape précédente.

Maintenant, exécutez la commande ls -l :

ls -l

Vous devriez voir une sortie similaire à celle-ci :

total 4
-rw-rw-r-- 1 labex labex   25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex   15 Feb 28 10:00 my_symlink -> original_file.txt

Décortiquons la sortie pour my_symlink :

  • Le premier caractère l indique qu'il s'agit d'un lien symbolique. Pour un fichier ordinaire, ce serait -.
  • Les autorisations (rwxrwxrwx) sont souvent affichées comme des autorisations complètes pour les liens symboliques, mais les autorisations réelles sont déterminées par le fichier cible.
  • Le nombre de liens est généralement 1 pour un lien symbolique.
  • Le propriétaire et le groupe sont labex.
  • La taille (15) est le nombre de caractères dans le chemin cible (original_file.txt).
  • L'horodatage est la date de création ou de modification du lien symbolique lui-même.
  • my_symlink : Le nom du lien symbolique.
  • -> original_file.txt : Cette partie montre clairement que my_symlink pointe vers original_file.txt.

Comparez cela à la sortie pour original_file.txt :

  • Le premier caractère - indique qu'il s'agit d'un fichier ordinaire.
  • Les autorisations (rw-rw-r--) montrent qui peut lire, écrire et exécuter le fichier.
  • Le nombre de liens (1) indique combien de liens physiques pointent vers les données de ce fichier.
  • La taille (25) est la taille réelle du contenu du fichier en octets.

L'utilisation de ls -l est un moyen très courant d'identifier rapidement les liens symboliques et de voir vers où ils pointent.

Dans cette étape, vous apprendrez à utiliser la commande readlink pour trouver la cible d'un lien symbolique.

Alors que ls -l est excellent pour avoir une vue d'ensemble visuelle, la commande readlink est spécifiquement conçue pour résoudre les liens symboliques et afficher le chemin de leur cible. Cela est particulièrement utile dans les scripts ou lorsque vous avez besoin uniquement du chemin de la cible sans les autres informations sur le fichier.

Assurez-vous d'être dans le répertoire ~/project.

Utilisez la commande readlink sur le lien symbolique my_symlink que vous avez créé dans les étapes précédentes :

readlink my_symlink

La sortie sera le chemin vers lequel le lien symbolique pointe :

original_file.txt

Cela confirme que my_symlink pointe effectivement vers original_file.txt.

La commande readlink a une option utile, -f, qui suit de manière récursive tous les liens symboliques et les résout jusqu'au chemin absolu de la cible finale. Cela est utile si vous avez une chaîne de liens symboliques.

Créons un autre lien symbolique qui pointe vers my_symlink :

ln -s my_symlink another_link

Maintenant, si vous utilisez readlink sur another_link sans l'option -f, il affichera la cible immédiate :

readlink another_link

Sortie :

my_symlink

Mais si vous utilisez readlink -f sur another_link, il suivra la chaîne (another_link -> my_symlink -> original_file.txt) et vous donnera le chemin absolu de la cible finale :

readlink -f another_link

Sortie :

/home/labex/project/original_file.txt

Cela montre le chemin complet vers le fichier original. La commande readlink -f est très puissante pour trouver la destination ultime d'un lien, même s'il est imbriqué dans d'autres liens.

Vous avez maintenant appris trois façons de travailler avec les liens symboliques : en utilisant test -L pour vérifier si un fichier est un lien, en utilisant ls -l pour voir les détails et les cibles des liens, et en utilisant readlink pour résoudre le chemin de la cible.

Résumé

Dans ce laboratoire (lab), vous avez appris à vérifier si un fichier est un lien symbolique sous Linux. Vous avez d'abord créé un fichier ordinaire et un lien symbolique pointant vers celui-ci. Vous avez ensuite utilisé la commande test avec l'option -L pour déterminer de manière programmée si un fichier donné est un lien symbolique, en observant comment son statut de sortie peut être utilisé avec des opérateurs logiques (&& et ||) pour afficher un résultat.

Vous avez également appris à vérifier visuellement un lien symbolique en utilisant la commande ls -l, qui affiche un 'l' au début du champ des autorisations et montre la cible du lien. Enfin, vous avez exploré la commande readlink pour résoudre le chemin de la cible d'un lien symbolique, en comprenant son utilité pour les scripts et l'automatisation.