Apprenez en lisant dans l'ordre

Liens symboliques et liens physiques — ln

Crée un lien symbolique qui stocke un chemin avec ln -s target.txt link.txt et vérifie le -> dans ls -l, puis crée un lien physique vers le même contenu avec ln base.txt hard.txt ; vois la différence avec des schémas et un terminal en navigateur.

Liens symboliques — ln -s

Un lien permet d'atteindre le même fichier sous un autre nom. Tu crées un lien symbolique avec ln -s target name, et c'est un fichier spécial qui stocke le chemin (l'emplacement) de la cible. Quand tu ouvres name, il suit automatiquement le chemin stocké jusqu'à la target. Dans ls -l, la ligne du lien montre où il pointe, sous la forme name -> target.

SyntaxeEffet
ln -s target name-s (symbolic) crée un lien symbolique qui est un alias basé sur un chemin
ls -lVérifie où il pointe grâce à l'affichage name -> target
ln target aliasCrée un lien physique pointant vers le même contenu
Symbolique vs physiqueSymbolique = un fichier spécial stockant le chemin de la cible / Physique = un alias vers le même contenu
Quand la cible est suppriméeSymbolique = perd sa cible et se casse / Physique = le contenu reste
Fonctionnement d'un lien symbolique — ln -s
target.txtcontenu : "data"link.txt (fichier spécial)stocke le chemin "target.txt"sortielink.txt -> target.txtsortie : "data"suit le chemin vers le vrai fichierln -s target.txt link.txtls -lcat link.txt
ln -s crée link.txt, un fichier spécial qui stocke le chemin target.txt. ls -l l'affiche sous la forme link.txt -> target.txt, et cat link.txt suit ce chemin pour lire le contenu du vrai fichier target.txt.
printf 'data\n' > target.txt   # Crée le fichier cible
ln -s target.txt link.txt     # Crée un lien symbolique
ls -l                         # Vérifie link.txt -> target.txt
cat link.txt                  # Affiche le contenu de target.txt

① Crée le fichier cible avec printf 'data\n' > target.txt.

② Ajoute l'option qui fait créer un lien symbolique à ln, puis passe la cible et le nouveau nom dans cet ordre pour créer link.txt.

③ Lance ls -l et vérifie que la cible du lien apparaît sous la forme link.txt -> target.txt. (Quand tu le réussis, une explication apparaît.)

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...

Liens physiques — ln

Sans -s, ln target alias crée un lien physique (hard link). Alors qu'un lien symbolique est un fichier spécial qui stocke un chemin vers la cible, un lien physique est un autre nom pointant vers le même contenu. Ouvrir l'un ou l'autre nom donne un contenu identique, et dans ls -l un lien physique n'affiche aucune flèche — il ressemble à un fichier ordinaire. Garde la distinction en tête : symbolique = un fichier spécial stockant le chemin de la cible, physique = un alias vers le même contenu.

En quoi liens symboliques et physiques diffèrent
base.txtcontenu "shared"symcontenu = chemin "base.txt"hardalias du même contenusortie : "shared"lu via le cheminsortie : "shared"lit le contenu directementln -s base.txt symln base.txt hardcat symcat hardles deux lisent "shared"
ln -s crée sym, qui stocke un chemin vers le vrai fichier, tandis que ln crée hard, un alias vers le même contenu. Les deux affichent shared avec cat, mais sym lit via le chemin et hard lit le contenu directement.
printf 'shared\n' > base.txt   # Crée le fichier cible
ln base.txt hard.txt          # Crée un lien physique
ls -l                         # hard.txt est listé sans flèche
cat hard.txt                  # Affiche le même contenu que base.txt

① Crée le fichier cible avec printf 'shared\n' > base.txt.

② Utilise ln sans option, en passant la cible et l'alias dans cet ordre, pour créer un lien physique nommé hard.txt.

③ Lance ls -l et vérifie que hard.txt est listé comme un fichier ordinaire, sans flèche (->).

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...

Ce qui se passe quand tu supprimes la cible

Comme un lien symbolique est un fichier spécial qui stocke un chemin vers la cible, il perd ce vers quoi il pointe dès que la cible disparaît. Comme un lien physique est un autre nom pointant vers le même contenu, le contenu reste même après la disparition du nom d'origine. Supprime la cible et vois la différence par toi-même.

Ce qui arrive à chaque lien quand la cible est supprimée
orig.txtcontenu "v"sl.txtcontenu = chemin "orig.txt"hl.txtalias du même contenuéchoue : lien casséNo such fileaffiche "v"le contenu resteln -s orig.txt sl.txtln orig.txt hl.txtcat sl.txtcat hl.txtaprès rm orig.txt
Après que rm orig.txt supprime le vrai fichier, sl.txt, qui ne stocke qu'un chemin, devient un lien cassé, tandis que hl.txt, qui partage le contenu, affiche encore son contenu avec cat.
printf 'v\n' > orig.txt       # Crée le fichier cible
ln -s orig.txt sl.txt         # Lien symbolique
ln orig.txt hl.txt            # Lien physique
rm orig.txt                   # Supprime la cible
cat sl.txt                    # Perd sa cible et échoue
cat hl.txt                    # Le contenu reste et peut être affiché

① Crée la cible avec printf 'v\n' > orig.txt.

② Crée un lien symbolique avec ln -s orig.txt sl.txt et un lien physique avec ln orig.txt hl.txt.

③ Supprime la cible avec rm orig.txt.

④ Lance cat sl.txt et cat hl.txt et compare la différence de résultats.

⑤ Lance ls -l et vérifie comment les deux liens apparaissent dans ls -l après la suppression.

Linux console
0 / 7 exécutée(s)
Loading Linux Terminal...
QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Comment est-ce affiché dans ls -l après que tu lances ln -s target.txt link.txt ?

Question 2Laquelle des propositions suivantes décrit correctement la différence entre liens symboliques et physiques ?

Question 3Après que tu supprimes le fichier cible avec rm, pour lequel cat réussit-il encore ?