Qu'est-ce que Lien symbolique (symlink) ?

Fichier spécial dont le contenu est le chemin d'un autre fichier ou répertoire ; l'ouvrir revient à utiliser ce vers quoi mène ce chemin. On le crée avec ln -s cible nom_du_lien, et ls -l l'affiche avec un l initial sous la forme « nom_du_lien -> cible ». Il peut désigner d'autres systèmes de fichiers et des répertoires, mais si la cible est supprimée ou déplacée, il devient un lien cassé qui ne mène plus nulle part. On le distingue du lien physique, qui est un autre nom du même inode.

Nom japonais: シンボリックリンク

« Lien symbolique (symlink) » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Bases de Linux et de la ligne de commande.

Domaine: Bases de Linux et de la ligne de commande

Création et apparence

Si on le crée avec ln -s /opt/tools/sim-2.3 /opt/tools/sim, ouvrir /opt/tools/sim ou y faire un cd utilise en réalité /opt/tools/sim-2.3. ls -l affiche « sim -> /opt/tools/sim-2.3 », et readlink ou realpath montrent où il mène. Les permissions du lien lui-même ne servent pas : l'accès est décidé par celles du fichier vers lequel il mène.

Chemins relatifs et absolus

Si le lien contient un chemin relatif, celui-ci est suivi à partir du répertoire où se trouve le lien. Cela a l'avantage de conserver la relation quand on déplace tout un répertoire ailleurs, mais déplacer le lien seul le casse. Avec un chemin absolu, le lien désigne le même endroit où qu'on le déplace, mais modifier l'organisation des répertoires de la cible le casse.

Différence avec un lien physique

Un lien physique ajoute un nom supplémentaire qui désigne le même inode, et le contenu subsiste même si le nom d'origine est supprimé. En revanche, il ne peut être créé qu'à l'intérieur d'un même système de fichiers, et normalement pas pour un répertoire. Un lien symbolique n'enregistre qu'un chemin : il peut donc traverser les systèmes de fichiers et désigner des répertoires, mais il se casse quand la cible disparaît.

Questions fréquentes

Dans quelles situations utilise-t-on des liens symboliques ?

Un usage bien connu est le changement de version d'un outil. Si /opt/tools/sim désigne le répertoire de la dernière version, les scripts des utilisateurs gardent le même chemin, et il suffit de faire pointer le lien ailleurs pour changer de version. On s'en sert aussi pour nommer les bibliothèques partagées, de libfoo.so vers libfoo.so.1.2, et pour accéder depuis un projet à de gros volumes de données placés sur un autre disque.

Comment trouver les liens cassés ?

Si la cible affichée par ls -l n'existe pas, de nombreux environnements le signalent par une couleur ou un affichage particulier. Avec le find de GNU, find . -xtype l liste les liens symboliques qui ne mènent nulle part. Essayer d'ouvrir un lien cassé donne l'erreur « No such file or directory ».

« Lien symbolique (symlink) » dans les explications

Questions mentionnant « Lien symbolique (symlink) » (1)

  1. Si l'on exécute dans l'ordre les commandes ci-dessus, quel est le résultat des deux dernières commandes cat ?

Termes associés

Lien physique (hard link) inode cron Expression régulière (regex) Git grep Permissions (droits d'accès) Pipe (|) Redirection des entrées-sorties Shell

Retour au glossaire