Liens symboliques
Objectifs
Comprendre la notion de lien symbolique
Utiliser la commande
ln
Définition : Lien symbolique
Certains fichiers ne sont que des pointeurs vers d'autres fichiers. On les appelle des liens symboliques.
Un lien symbolique contient le chemin relatif ou absolu d'un fichier ou d'un répertoire qui peut être n'importe où dans l'arborescence. Il permet de faire référence à ce fichier ou ce répertoire à un autre endroit.
bonnetst@vivaldi:~/api$ ls -l
total 16
-rw-rw-r-- 1 bonnetst bonnetst 13 janv. 25 20:34 fichier.txt
lrwxrwxrwx 1 bonnetst bonnetst 11 janv. 25 20:41 lien.txt -> fichier.txt
bonnetst@vivaldi:~/api$ cat fichier.txt
Vive Linux !
bonnetst@vivaldi:~/api$ cat lien.txt
Vive Linux !
Méthode : Création de liens symboliques
La commande ln -s
<nom du fichier> <nom du lien> permet de créer des liens symboliques.
bonnetst@vivaldi:~/api$ ln -s fichier.txt lien2.txt
bonnetst@vivaldi:~/api$ ls -l
total 20
-rw-rw-r-- 1 bonnetst bonnetst 13 janv. 25 20:34 fichier.txt
lrwxrwxrwx 1 bonnetst bonnetst 11 janv. 25 20:45 lien2.txt -> fichier.txt
lrwxrwxrwx 1 bonnetst bonnetst 11 janv. 25 20:41 lien.txt -> fichier.txt
Attention : Chemins dans les liens symboliques
Un lien symbolique fait référence à un fichier ou répertoire exactement comme il est saisi dans la commande ln
. Il faut que cette référence soit un chemin correct quelque soit l'endroit d'où le lien est utilisé.
bonnetst@vivaldi:~/api$ mkdir subdir
bonnetst@vivaldi:~/api$ ln -s fichier.txt subdir/lien.txt
bonnetst@vivaldi:~/api$ ls -l subdir
total 4
lrwxrwxrwx 1 bonnetst bonnetst 11 janv. 25 20:54 lien.txt -> fichier.txt
bonnetst@vivaldi:~/api$ cat subdir/lien.txt
cat: subdir/lien.txt: Aucun fichier ou dossier de ce type
En suivant le lien, le système cherche le fichier dans le répertoire subdir
et ne le trouve pas. Il aurait fallu donner dans le lien le chemin relatif correct de fichier.txt
Conseil : Comment toujours créer des liens symboliques corrects.
Pour créer un lien symbolique correct, il faut toujours utiliser :
Le chemin absolu vers la cible
Le chemin relatif vers la cible depuis l'emplacement du lien.
bonnetst@vivaldi:~/api$ ln -sf ../fichier.txt subdir/lien.txt
bonnetst@vivaldi:~/api$ cat subdir/lien.txt
Vive Linux !
Complément : Manipulation des liens symboliques
Les liens symboliques peuvent être supprimés par rm
. Seul le lien est alors supprimé, pas le fichier vers lequel il pointe.
En revanche, la copie d'un lien par cp
copie le fichier et non lien par défaut. L'option -d
permet de copier le lien lui-même.
bonnetst@vivaldi:~/api/subdir$ cp lien.txt lien2.txt
bonnetst@vivaldi:~/api/subdir$ ls -l
total 4
lrwxrwxrwx 1 bonnetst bonnetst 14 janv. 25 21:02 lien.txt -> ../fichier.txt
bonnetst@vivaldi:~/api/subdir$ cp lien.txt lien2.txt
bonnetst@vivaldi:~/api/subdir$ ls -l
total 16
-rw-rw-r-- 1 bonnetst bonnetst 13 janv. 25 21:10 lien2.txt
lrwxrwxrwx 1 bonnetst bonnetst 14 janv. 25 21:02 lien.txt -> ../fichier.txt
lien2.txt
est une copie du fichier, pas du lien.
bonnetst@vivaldi:~/api/subdir$ cp -d lien.txt lien3.txt
bonnetst@vivaldi:~/api/subdir$ ls -l
total 20
-rw-rw-r-- 1 bonnetst bonnetst 13 janv. 25 21:10 lien2.txt
lrwxrwxrwx 1 bonnetst bonnetst 14 janv. 25 21:11 lien3.txt -> ../fichier.txt
lrwxrwxrwx 1 bonnetst bonnetst 14 janv. 25 21:02 lien.txt -> ../fichier.txt
lien3.txt
est bien une copie du lien.