5.5. Les liens symboliques et la limitation des liens « en dur  »

Ici nous avons à faire face à une incompréhension très courante, même parmi les utilisateurs d'Unix, qui est principalement due au fait que les liens tels que nous les avons vus jusque là (faussement appelés liens « en dur  ») sont seulement associés aux fichiers réguliers (et nous avons vu que ce n'est pas le cas ( même les liens symboliques sont « liés  »). Mais cela requiert que nous expliquions d'abord ce que sont les liens symboliques[1].

Les liens symboliques sont des fichiers d'un type particulier dont le seul contenu est une chaîne de caractères arbitraire, qui peut ou non pointer sur un vrai nom de fichier. Quand vous mentionnez un lien symbolique sur la ligne de commande ou dans un programme, vous accédez en fait au fichier sur lequel pointe le lien, s'il existe. Par exemple :

$ echo Bonjour >monfichier
$ ln -s monfichier monlien
$ ls -il
total 4
    169 -rw-rw-r--    1 fg       fg              6 déc 10 21:30 monfichier
    416 lrwxrwxrwx    1 fg       fg              6 déc 10 21:30 monlien 
-> monfichier
$ cat monfichier
Bonjour
$ cat monlien
Bonjour

Vous pouvez voir que le type du fichier monlien est 'l'. Les droits d'accès pour un lien symbolique n'ont aucune signification : ils seront toujours rwxrwxrwx. Vous pouvez également voir que c'est un fichier différent de monfichier, parce que son numéro d'i-nœud est différent. Mais il se réfère au fichier monfichier de façon symbolique, donc quand vous tapez cat monlien, vous affichez en fait le contenu du fichier monfichier. Pour démontrer qu'un lien symbolique contient une chaîne arbitraire, nous pouvons faire la chose suivante :

$ ln -s "Je n'existe pas" unautrelien
$ ls -il unautrelien  
    747 lrwxrwxrwx    1 fg       fg             15 déc 15 18:01 unautrelien 
-> Je n'existe pas
$ cat unautrelien 
cat: unautrelien: Aucun fichier ou répertoire de ce type
$

Mais les liens symboliques existent parce qu'ils s'affranchissent de plusieurs limitations des liens normaux :

Donc les liens symboliques sont très utiles dans plusieurs cas, et très souvent, les gens tendent à les utiliser pour lier des fichiers même quand un lien normal est possible. Un avantage des liens normaux, pourtant, est que vous ne perdez pas le fichier si vous effacez l'« original  » :-)

Enfin, si vous avez observé attentivement, vous savez à quoi correspond la taille d'un lien symbolique : c'est tout simplement la taille de la chaîne de caractères.

Notes

[1]

En anglais, les liens symboliques sont aussi appelés « soft links  », tandis que les liens normaux sont appelés (toujours faussement) « hard links  », qui donne l'expression française (toujours aussi fausse) de liens « en dur  ».