Sous Windows, il est possible de créer un raccourci afin d'accéder à un fichier qui est dans un répertoire via un autre répertoire. Sous Linux, au shell, cette technique existe depuis longtemps : ce sont les liens. Notez que les « lanceurs » que vous placez sur votre bureau ou sur le panel ne sont pas des liens.
Il existe deux types de liens : les liens symboliques et les liens statiques.
Les liens symboliques sont comparables aux raccourcis Windows. Quand on crée un lien symbolique, on a l'impression d'avoir deux fichiers (l'original et le lien) qui sont identiques. En fait, les deux fichiers sont un seul et même fichier auquel on accède via l'un ou l'autre nom. Le lien n'est rien d'autre qu'un pointeur vers le fichier original. La modification à l'un des fichiers est automatiquement reflétée dans l'autre.
Pour créer un lien symbolique :
ln –s fichier nom_lien
ou
cp –s fichier nom_lien
Ex :
ln –s /etc/passwd ~/passwd
Cette commande crée un lien vers le fichier /etc/passwd directement dans notre répertoire personnel. Si on a les droits de le faire, on peut modifier le fichier /etc/passwd directement à partir du lien. Et si le fichier /etc/passwd est modifié d'une façon ou d'une autre, les changements sont reflétés dans le fichier ~/passwd.
Lorsque vous listerez le contenu d'un répertoire avec détails, vous verrez ceci :
lrwxrwxrwx 1 etudiant etudiant 11 mai 8 14:21 passwd -> /etc/passwd
Remarquez le premier caractère de la ligne : la lettre l. Ceci indique qu'il s'agit d'un lien symbolique. Remarquez également qu'après le nom du lien, on indique sur quel fichier le lien est fait. Une troisième remarque : tout le monde a tous les droits sur le lien mais les droits véritables sont ceux du fichier sur lequel le lien est fait.
Si le fichier original est effacé, le lien demeurera mais sera inutile. Si on tente de l'afficher, on verra le message :
Aucun fichier ou répertoire de ce type
Il est possible de créer un lien symbolique vers un répertoire. Il suffit de spécifier un nom de répertoire au lieu du nom d'un fichier.
Ex :
ln –s /var/log ~/depart
Avec ce lien, vous pouvez lister le contenu du répertoire /var/log comme suit :
ls depart
Le lien absolu ne correspond pas à la notion de raccourci sous Windows. Quand on crée un lien absolu, on crée aussi deux façons d'accéder à des données. Cependant, on peut par la suite supprimer le lien ou le fichier original et le fichier restant demeure complètement accessible. En fait, c'est comme si le même fichier comportait deux noms.
Quand on crée un lien absolu, son type de fichier correspond à un fichier ordinaire (représenté par un tiret quand on fait ls –l). Cependant, la colonne précédent le nom du propriétaire indique combien de fichiers différents permettent d'accéder directement à l'information de ce fichier. Autrement dit, cette colonne indique combien de liens absolus sont fait, en comptant le fichier original.
Si on supprime un fichier alors qu'un lien absolu existe sur ce fichier, le fichier demeure entier.
Simplement, le nombre de liens est diminué. Le fichier ne sera jamais effacé tant et aussi longtemps qu'il reste au moins un lien dessus.
On crée un lien absolu comme suit :
ln fichier nom_lien
Ex :
ls –l
résultat : rw-r--rwx 1 etudiant etudiant 11 mai 8 14 :21 essai
ln essai lien1
ls –l
résultat :-rw-r--rwx 2 etudiant etudiant 11 mai 8 14 :21 essai
-rw-r--rwx 2 etudiant etudiant 11 mai 8 14 :21 lien1
rm essai
ls –l
résultat :-rw-r--rwx 1 etudiant etudiant 11 mai 8 14 :21 lien1
Il n'est pas possible de faire un lien absolu sur un répertoire.
Lorsqu'on découvre qu'un fichier comporte deux noms (affiche le chiffre 2 dans la colonne à côté des droits), on sait que la destruction de ce fichier ne détruira pas les données. Comment faire pour retrouver l'autre nom du fichier afin de le détruire définitivement? Il faut trouver l'adresse mémoire où le fichier est stocké. En termes techniques, on parlera du numéro d'inode.
La commande ls peut vous donner ce numéro à l'aide de l'option -i :
ls -i
Vous obtiendrez simplement un chiffre, le numéro d'inode.
La commande find vous permettra ensuite de retrouver tous les noms de fichiers qui correspondent à ce numéro d'inode, grâce à l'option -inum :
find / -inum no_inode
Ex :
ls -l
résultat :-rw-r--r-- 2 etudiant etudiant 8192 jan 16 15:25 horaire.sxw (on voit qu'il y a deux noms pour ce fichier)
ls -i
résultat :260611
find -inum 260611
résultat : ./Download/LienAbsolu
./horaire.sxw
(on voit que l'autre nom est situé dans le répertoire Download)
▼Publicité