Commande ln de Linux : voici comment créer des liens sous Linux

Il est possible de créer rapidement des liens sous Linux avec la ligne de commande. La commande ln nécessaire à cet effet est relativement simple d’utilisation ; elle ne requiert que peu de code et peut être utilisée pour différentes routines d’application. Toutefois, si vous souhaitez créer des liens spécifiques et efficaces, vous devez connaître la différence entre les liens physiques et les liens symboliques. Nous allons vous expliquer les applications pour lesquelles chaque lien est recommandé. En outre, nos exemples d’application vous permettront de savoir quel code est nécessaire pour créer des liens avec Linux.

Qu’est-ce que la commande ln de Linux ?

La commande ln de Linux (« ln » correspondant à l’abréviation du mot anglais « link », signifiant « lien ») permet de créer des liens vers un fichier ou un répertoire. Pour la saisie, il faut utiliser la ligne de commande de Linux (également appelée « Shell »), qui peut être ouverte et exploitée à partir d’une fenêtre de terminal. Sous Linux, la commande ln fait partie des commandes de terminal les plus importantes et les plus fréquemment utilisées. Il est possible de créer des liens symboliques ou physiques avec cette ligne de commande.

Que sont les liens symboliques ou physiques ?

Pour utiliser la commande ln sous Linux de manière judicieuse et ciblée, il faut savoir différencier un lien symbolique d’un lien physique. Les liens symboliques correspondent à des références croisées qui adressent un fichier d’origine avec un chemin de référence. Si vous déplacez ou supprimez le fichier d’origine, l’objet cible n’existe plus et le répertoire se vide. En revanche, si c’est le lien symbolique que vous supprimez, le fichier d’origine est conservé, mais la référence à ce fichier disparaît. Pour ces liens, l’anglais parle de « softlinks » ou de « symlinks » (pour « symbolic links »). Vous pouvez créer des liens symboliques grâce à la commande ln du terminal Linux, mais aussi à partir des fonctionnalités de l’interface utilisateur graphique, par exemple dans le gestionnaire de fichiers Linux. Sur l’interface utilisateur graphique de Linux, les liens symboliques sont représentés par une flèche, également présente sur l’icône du fichier.

Les liens physiques sont créés depuis la ligne de commande. Mieux intégrés à la gestion de mémoire d’un système d’exploitation et aux fichiers spécifiques utilisés que les liens symboliques, ils constituent des entrées de répertoire supplémentaires pour les fichiers d’origine ; différents liens peuvent désigner un même fichier. Linux ne fait aucune distinction technique ou opérationnelle entre le lien d’origine (primaire) et les liens physiques générés ensuite (secondaires). Les entrées du répertoire ont les mêmes droits et fonctionnent en autonomie. Vous pouvez utiliser un lien physique pour accéder à un fichier depuis différents emplacements ; c’est utile pour les sauvegardes.

Voici un exemple caractéristique de leur fonctionnement : un fichier accessible depuis « Mes vidéos » peut être ouvert depuis « Mes vidéos sauvegardées » avec un lien physique. En supprimant le fichier d’origine de « Mes vidéos », seule la référence principale au fichier vidéo disparaît, mais il s’ouvre toujours en parallèle (avec le lien renvoyant au fichier dans « Mes vidéos sauvegardées »). Avec les liens physiques, toute note ajoutée à la gestion de mémoire ne prend pas le double de place. Ce sont des options d’accès (avec des chemins vers le fichier), non des copies physiques complètes.

Sous Linux, les liens physiques sont associés à un système de compatibilité interne spécifique. Chaque lien désigne un inode (nœud d’index). Un numéro d’inode distinctif et unique lui est attribué, ainsi qu’au fichier d’origine. Un fichier n’est supprimé de la gestion des inodes (et du système) que si les entrées (l’ensemble des références au fichier) sont invalidées par des suppressions et que le compteur de liens internes repart de zéro. Si une entrée est supprimée ou si le fichier est transféré vers un autre répertoire, rien ne change. Les options restantes dans l’inode permettant d’accéder au fichier d’origine restent valides.

Remarque

Les inodes sont des structures de données définies. Ils peuvent décrire un fichier de manière unique, comporter des métadonnées le concernant (son appartenance à un groupe, son propriétaire, ses droits d’accès, etc.) et documenter l’emplacement où il est stocké (sous la forme d’une adresse mémoire).

Liens physiques et symboliques : à quelles applications conviennent-ils le mieux ?

Avec les liens symboliques, les utilisateurs au sens large peuvent créer la plupart des liens habituellement utilisés. Pour associer des fichiers à des répertoires dépassant les limites du système de fichiers, même les différents disques durs et partitions ne constituent pas un obstacle. Toutefois, les liens symboliques ne sont pas aussi flexibles que les liens physiques lorsqu’il s’agit d’apporter des modifications à l’objet cible (c’est-à-dire de le déplacer ou de le supprimer).

Généralement, les liens physiques ne peuvent mener que vers des fichiers, par vers des répertoires ni des dossiers. Comme les numéros d’inode liés à ces liens physiques ne peuvent être gérés qu’au sein de partitions, il n’est possible de créer que des liens internes à celles-ci. Cependant, les systèmes Linux modernes comportent fréquemment plusieurs systèmes de fichiers sur différents disques durs et partitions. Si vous ciblez les liens physiques lors de la création de liens sous Linux, vous devez bien connaître votre système et disposer de certaines connaissances de base (dans le domaine du partitionnement ou du formatage, par exemple).

Ils apportent tout de même un certain nombre d’avantages, notamment en ce qui concerne les sauvegardes. Avec eux, vous disposez d’une solution d’accès alternative au fichier d’origine, ce qui permet de libérer de l’espace tout en améliorant la sécurité des données. Les caractéristiques positives de cette technique de liaison sont notamment mises à profit par le logiciel HardlinkBackup.

Contrairement aux liens symboliques, les liens physiques ne doivent pas être déréférencés par des processus de calcul, car ils représentent directement le fichier d’origine. Cela signifie donc qu’ils peuvent être traités plus rapidement et qu’ils sont totalement transparents, entre autres pour les applications. Les liens physiques permettent également de résoudre certains problèmes spécifiques. Par exemple, si un programme nécessite absolument une bibliothèque qui est en réalité obsolète, un lien physique est capable de maintenir cette fonction supplémentaire. Il reprend le nom de la bibliothèque obsolète (qui a entre-temps été supprimée) et redirige l’utilisateur vers une version plus récente.

Comment la commande ln s’utilise-t-elle en pratique ?

Dans la suite de cet article, nous allons vous présenter quelques exemples d’application simples pour la création de liens sous Linux. La syntaxe de la commande est adaptée aux tâches routinières essentielles effectuées régulièrement. Bien entendu, il est également possible d’effectuer des actions de liaison plus complexes avec la commande ln de Linux. Cependant, celles-ci nécessitent un peu de pratique en termes de gestion de la ligne de commande. Généralement, il est nécessaire d’élaborer un code plus complexe.

Créer un lien physique dans le même répertoire

Dans sa configuration standard et sans aucune autre option, la commande ln de Linux crée des liens fixes prenant la forme de liens physiques. Il est donc nécessaire de suivre ce format de commande :

ln -s Fichier Cible Référence

Avec le code qui suit, vous pouvez créer dans le profil utilisateur Linux actuel « Pierre » (/home/pierre/) un lien physique vers un fichier vidéo (video.mp4). Le fichier d’origine et le lien physique ainsi généré se trouvent tous les deux dans le même répertoire pour les vidéos. Si cela est nécessaire, le lien physique peut ensuite être déplacé sans aucun problème, sans pour autant perdre sa validité.

ln /home/pierre/videos/video.mp4 lien_physique_vers_fichier_video

Créer un lien physique dans un répertoire différent

Si vous devez créer un lien vers le fichier vidéo sur l’environnement de bureau de Linux, veuillez utiliser cette syntaxe :

ln /home/pierre/videos/video.mp4 /home/pierre/Desktop/lien_physique_vers_fichier_video

Créer un lien symbolique pour des fichiers

Si vous souhaitez créer un lien symbolique en utilisant la commande ln de Linux, il est nécessaire de compléter la syntaxe à l’aide de l’option « -s » (« s » signifiant « symbolique »). Pour un lien symbolique, le format de commande est le suivant :

ln -s Fichier Cible Référence

Dans cet exemple, le lien symbolique est créé dans le même dossier :

ln -s /home/pierre/video.mp4 lien_symbolique_vers_fichier_video

Créer un lien symbolique dans d’autres répertoires

Vous pouvez aussi créer des liens symboliques dans d’autres répertoires, par exemple sur votre bureau :

ln -s /home/pierre/videos/video.mp4 /home/pierre/Desktop/lien_symbolique_vers_fichier_video

Il est possible d’implémenter une action de liaison plus complexe avec l’option « -t » (« t » signifiant « target », pour « répertoire cible ») et du code Linux supplémentaire :

ls Factures* | xargs ln -s -t /home/pierre/Desktop/

La syntaxe de commande crée des liens vers tous les fichiers de Factures* qui se trouvent dans le répertoire de base et les déplace vers le répertoire du bureau. L’astérisque (« * ») vous garantit que tous les fichiers contenant le mot « Factures » sont bien enregistrés (par exemple Factures_de_Janvier, Factures_de_Fevrier, etc.).

Si vous souhaitez exercer davantage de contrôle sur les actions de liaison et afficher des informations supplémentaires, l’option « -v » (« v » signifiant « Verbose », pour « mode Verbose ») peut véritablement vous aider. Elle répertorie le nom de tous les fichiers reliés à l’écran, ce qui s’avère tout particulièrement utile pour les actions de liaison de grande envergure :

ln -s -v /home/pierre/videos/movie.mp4 /home/pierre/Desktop/lien_symbolique_vers_fichier_video

Il est possible de supprimer les liens symboliques en utilisant la commande spéciale Linux « rm » (« rm » signifiant « remove », pour « supprimer »). L’extrait de code suivant permet de supprimer un lien symbolique vers un fichier vidéo se trouvant dans le répertoire de travail actuel :

rm lien_symbolique_vers_fichier_video

Si vous souhaitez supprimer plusieurs fichiers vidéo du répertoire de travail actuel en une seule fois, vous pouvez les répertorier les uns après les autres en les séparant par une espace :

rm lien_symbolique_video1 lien_symbolique_video2 lien_symbolique_video3 

Par exemple, grâce à l’option supplémentaire « -r » (« r » signifiant « récursif »), il est possible de supprimer tous les fichiers de liens symboliques d’un dossier de liens symboliques. Si des sous-dossiers subsistent, ceux-ci sont également supprimés.

rm -r ~/Desktop/Dossier-Liens-Symboliques/*

Créer un lien symbolique pour des répertoires

L’extrait de code suivant ne permet pas la liaison avec un fichier, mais avec un répertoire. Un lien symbolique vers le dossier vidéo est placé sur le bureau, à l’aide de la syntaxe de commande suivante :

ln -s /home/pierre/videos/ /home/pierre/Desktop/lien_symbolique_pour_dossier_video

Lorsque vous créez des liens sous Linux, vous ne devez pas toujours nécessairement renseigner des chemins complets (ou chemins absolus). La commande Shell et la commande ln de Linux acceptent aussi les chemins et raccourcis relatifs. Par exemple, un tilde (« ~ ») représente le chemin absolu vers le répertoire de base de l’utilisateur actuel (soit, dans notre exemple, /home/pierre/). Voici ce à quoi pourrait ressembler le code compact pour un lien symbolique faisant référence au répertoire vidéo sur le bureau (c’est-à-dire /Home/pierre/videos/) :

ln -s ~/videos ~/Desktop/lien_symbolique_pour_dossier_video
Note

Lorsque vous créez un lien à l’aide de la commande ln de Linux, aucune structure de répertoire ne se crée automatiquement. Pour que la commande ln s’exécute avec succès et sans erreur, les niveaux de répertoire que vous souhaitez adresser doivent déjà tous exister (il en va de même pour les sous-dossiers si plusieurs niveaux de répertoire sont pertinents pour votre application).

Créer simultanément plusieurs liens symboliques dans un répertoire cible

Le lien que vous créez peut à la fois mener vers un répertoire et vers un fichier. Si tel est le cas, vous devez structurer la syntaxe de la commande à l’aide du modèle qui suit :

ln <Option> <Objetdelien1> < Objetdelien2> <Dossier cible avec liens symboliques pour les objets de lien>

Dans cet exemple, « Objetdelien1 » est à nouveau le fichier vidéo se trouvant dans le dossier vidéo de Pierre. « Objetdelien2 », quant à lui, est un dossier appelé « Test » classé dans le répertoire vidéo de Pierre en tant que sous-dossier. Les liens symboliques relatifs à ce fichier vidéo et à ce répertoire de test doivent être générés dans le répertoire cible intitulé « Dossier-liens-symboliques » :

ln -s ~/videos/video.mp4 ~/videos/test/ ~/Desktop/Dossier-liens-symboliques

Il faut que le répertoire cible « Dossier-liens-symboliques » existe déjà sur le bureau pour que le lien fonctionne.

Créer des liens symboliques avec une sauvegarde

Si la commande ln de Linux doit servir à créer une copie de sauvegarde des fichiers déjà présents dans le répertoire cible (dans cet exemple, il s’agirait donc d’un lien symbolique plus ancien, du même nom, vers le fichier vidéo), l’option de ligne de commande « -b » (« b » signifiant « backup », pour « sauvegarde », peut s’avérer utile :

ln -s -b /home/pierre/videos/movie.mp4 /home/pierre/Desktop/lien_symbolique_vers_fichier_video

Le fichier de sauvegarde ainsi créé dans le répertoire cible est reconnaissable par le tilde à la fin de son nom (par exemple : lien_symbolique_vers_fichier_video~ en allemand). Si vous n’avez pas besoin d’effectuer de sauvegarde et que vous souhaitez écraser un ancien fichier de lien symbolique existant, utilisez l’option « -f » (« f » signifiant « force ») :

ln -s -f /home/pierre/videos/movie.mp4 /home/pierre/Desktop/lien_symbolique_vers_fichier_video

Lorsque vous créez des liens sous Linux, l’option « --help » (« aide ») peut vous être utile, car elle répertorie tous les paramètres et options disponibles pour la commande ln. Si vous ajoutez l’option « -i » (« i ») signifiant « interactif »), une demande de confirmation apparaît pour que vous autorisiez la suppression de la cible.