Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:systeme:ln [04/07/2024 17:59] agp91 [Illustration pratique] |
doc:systeme:ln [04/07/2024 19:29] agp91 |
||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
* Suivi : {{tag>à-compléter}}{{tag>à-tester}} | * Suivi : {{tag>à-compléter}}{{tag>à-tester}} | ||
* Création par [[user>smolski]] le 21/06/2010 | * Création par [[user>smolski]] le 21/06/2010 | ||
- | * Testé par .... le .... | + | * Testé par [[user>agp91]] le 04/07/2024 |
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=113446|C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=113446|C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
Ligne 17: | Ligne 17: | ||
La commande ''ln'' établit un lien symbolique ou un lien physique entre 2 fichiers. | La commande ''ln'' établit un lien symbolique ou un lien physique entre 2 fichiers. | ||
- | Son utilisation correspond à une redirection **active** entre deux //fichiers// désignés. \\ | + | Les modifications opérées //sur/dans// l'un sont visibles immédiatement depuis l'un ou l'autre des fichiers liés. |
- | + | ||
- | Les modifications opérées //sur/dans// l'un sont visibles immédiatement depuis l'un ou l'autre des fichiers liés. Autrement dit, un lien est un type spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même contenu sur un disque. | + | |
===== Synopsis ===== | ===== Synopsis ===== | ||
Ligne 27: | Ligne 24: | ||
== Lien symbolique : == | == Lien symbolique : == | ||
- | ln -s <fichier_cible> <fichier_symbole> | + | ln -s <fichier_cible> <nom_lien> |
- | ln -s <répertoire_cible> <répertoire_symbole> | + | ln -s <répertoire_cible> <nom_lien> |
- | ln -s <point_cible> <point_symbole> | + | |
== Lien physique : == | == Lien physique : == | ||
Ligne 43: | Ligne 39: | ||
== Les liens symboliques (symlink) == | == Les liens symboliques (symlink) == | ||
- | Un lien symbolique est constitué d'un réel fichier de petite taille ; il contient le nom du fichier auquel il correspond. Par conséquent, la suppression du fichier d'origine, c'est-à-dire la cible du lien, rendra le lien symbolique inutilisable puisqu'il ne correspondra plus à un fichier valide ; le lien sera alors brisé. | + | Un lien symbolique est constitué d'un réel fichier de petite taille ; il contient le nom (chemin) du fichier auquel il correspond. Par conséquent, la suppression du fichier d'origine, c'est-à-dire la cible du lien, rendra le lien symbolique inutilisable puisqu'il ne correspondra plus à un fichier valide ; le lien sera alors brisé. |
== Les liens physiques ou durs (hardlink) == | == Les liens physiques ou durs (hardlink) == | ||
- | Un lien dur associe deux ou plusieurs fichiers à un même espace sur le disque tout en préservant leurs indépendances lors de modifications de leurs contenus. De même, la suppression d'un fichier n'affectera pas l'autre. | + | Un lien dur associe deux ou plusieurs fichiers à un même espace sur le disque. Ainsi un fichier peut disposer réellement de plusieurs noms (chemins). La suppression d'un fichier lié physiquement n'affectera pas les autres fichiers qui lui sont liés. |
**Nota :** \\ | **Nota :** \\ | ||
Ligne 57: | Ligne 53: | ||
Afin de bien comprendre les principes que nous avons décrits ci-haut, nous allons illustrer tout cela à l'aide de quelques exemples simples. | Afin de bien comprendre les principes que nous avons décrits ci-haut, nous allons illustrer tout cela à l'aide de quelques exemples simples. | ||
- | |||
- | Débutant - À savoir : | ||
- | |||
- | * L'opérateur de redirection **''[[:doc:programmation:shell:chevrons |>]]''** (chevron fermant) | ||
- | * La commande **''[[:doc:systeme:ls |ls]]''** | ||
- | * La commande **''[[:doc:systeme:rm |rn]]''** | ||
- | * [[:doc:systeme:droits-unix |Les Droits]] | ||
- | * La commande d'édition **''[[:doc:editeurs:nano | nano]]''** | ||
- | |||
- | //Et oui, tout ça cher Débutant ! Il reste que la plupart de ces commandes sont les commandes en ligne principales __usuelles__ à utiliser dans un terminal.// :-) | ||
- | |||
- | |||
- | ==== Créer les répertoires et fichiers tests que nous allons utiliser ==== | ||
Dans ''/home/votre_user/'', créez un répertoire nommé ''test_lien'' avec [[:doc:systeme:mkdir|mkdir]] et s'y positionner avec [[:doc:programmation:shell:cd | cd]] : | Dans ''/home/votre_user/'', créez un répertoire nommé ''test_lien'' avec [[:doc:systeme:mkdir|mkdir]] et s'y positionner avec [[:doc:programmation:shell:cd | cd]] : | ||
Ligne 93: | Ligne 76: | ||
</code> | </code> | ||
- | ===== Créer un lien symbolique (symlink) : ===== | + | ===== Les liens symboliques (symlink) : ===== |
Situation de départ : | Situation de départ : | ||
<code user>ls -l</code> | <code user>ls -l</code> | ||
<code> | <code> | ||
+ | total 4 | ||
-rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt | -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt | ||
</code> | </code> | ||
+ | |||
+ | ==== Créer un lien symbolique ==== | ||
On crée le lien symbolique : | On crée le lien symbolique : | ||
Ligne 108: | Ligne 94: | ||
<code user> | <code user> | ||
- | ls -l</code> | + | ls -l |
- | <code> | + | </code><code> |
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt | ||
-rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt | -rw-r--r-- 1 martin martin 13 déc 14 22:02 test1.txt | ||
Ligne 126: | Ligne 113: | ||
* La destruction totale d'un lien symbolique ne détruit rien dans le fichier cible. | * La destruction totale d'un lien symbolique ne détruit rien dans le fichier cible. | ||
- | ==== Modification du contenu des fichiers liés ==== | + | ==== Modification du contenu ==== |
<code user> | <code user> | ||
Ligne 146: | Ligne 133: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt | ||
-rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | ||
Ligne 164: | Ligne 152: | ||
ls -li | ls -li | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
8667148 lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt | 8667148 lrwxrwxrwx 1 martin martin 9 déc 14 22:05 lien1.txt -> test1.txt | ||
8667139 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | 8667139 -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | ||
Ligne 178: | Ligne 167: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
-rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | ||
</code> | </code> | ||
Ligne 186: | Ligne 176: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien1.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien1.txt -> test1.txt | ||
-rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | ||
</code> | </code> | ||
- | + | ==== Modification du nom d'un lien symbolique ==== | |
- | + | ||
- | ==== Modification d'un nom des fichiers liés : ==== | + | |
- | + | ||
- | === Modifier le nom d'un lien symbolique === | + | |
Modifions le nom du fichier du lien symbolique ''lien1.txt'' à l'aide de la [[:doc:systeme:mv |commande mv]] : | Modifions le nom du fichier du lien symbolique ''lien1.txt'' à l'aide de la [[:doc:systeme:mv |commande mv]] : | ||
Ligne 202: | Ligne 189: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien2.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien2.txt -> test1.txt | ||
-rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test1.txt | ||
Ligne 211: | Ligne 199: | ||
<code user>mv lien2.txt lien1.txt</code> | <code user>mv lien2.txt lien1.txt</code> | ||
- | === Modifier le nom d'un fichier cible === | + | ==== Modification du nom d'un fichier cible ==== |
Modifions le nom du fichier cible ''test1.txt'' : | Modifions le nom du fichier cible ''test1.txt'' : | ||
Ligne 219: | Ligne 207: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien1.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 22:13 lien1.txt -> test1.txt | ||
-rw-r--r-- 1 martin martin 30 déc 14 22:08 test2.txt | -rw-r--r-- 1 martin martin 30 déc 14 22:08 test2.txt | ||
Ligne 237: | Ligne 226: | ||
</code> | </code> | ||
- | ==== Modifications des droits des fichiers liés : ==== | + | ==== Modifications des droits ==== |
Depuis le début de cette illustration, nous voyons que les droits restent immuablement complets pour le fichier du lien symbolique ''lien1.txt''. | Depuis le début de cette illustration, nous voyons que les droits restent immuablement complets pour le fichier du lien symbolique ''lien1.txt''. | ||
Ligne 245: | Ligne 234: | ||
Essayons de les modifier. \\ | Essayons de les modifier. \\ | ||
Modifions la propriété du fichier du lien symbolique ''lien1.txt'' pour que //root// devienne le propriétaire. | Modifions la propriété du fichier du lien symbolique ''lien1.txt'' pour que //root// devienne le propriétaire. | ||
- | |||
- | === Modification des droits d'un lien symbolique === | ||
Situation de départ : | Situation de départ : | ||
Ligne 252: | Ligne 239: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt | ||
-rw-r--r-- 1 martin martin 13 déc 14 22:59 test1.txt | -rw-r--r-- 1 martin martin 13 déc 14 22:59 test1.txt | ||
Ligne 264: | Ligne 252: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt | lrwxrwxrwx 1 martin martin 9 déc 14 23:00 lien1.txt -> test1.txt | ||
-rwx------ 1 martin martin 13 déc 14 22:59 test1.txt | -rwx------ 1 martin martin 13 déc 14 22:59 test1.txt | ||
Ligne 296: | Ligne 285: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 0 | ||
-rw-r--r-- 1 martin martin 0 déc 15 00:02 test2.txt | -rw-r--r-- 1 martin martin 0 déc 15 00:02 test2.txt | ||
</code> | </code> | ||
Ligne 304: | Ligne 294: | ||
ls -lv | ls -lv | ||
</code><code> | </code><code> | ||
+ | total 0 | ||
-rw-r--r-- 2 martin martin 0 déc 15 00:02 lien2.txt | -rw-r--r-- 2 martin martin 0 déc 15 00:02 lien2.txt | ||
-rw-r--r-- 2 martin martin 0 déc 15 00:02 test2.txt</code> | -rw-r--r-- 2 martin martin 0 déc 15 00:02 test2.txt</code> | ||
Ligne 314: | Ligne 305: | ||
Pareillement dans la ligne du ''lien2.txt'' : ''-rw-r--r-- **2** martin martin 0 déc 15 00:02 lien2.txt'' | Pareillement dans la ligne du ''lien2.txt'' : ''-rw-r--r-- **2** martin martin 0 déc 15 00:02 lien2.txt'' | ||
+ | |||
+ | <note tip>Le second champ retourné par le commande ''ls -l'', indique ne nombre de noms (chemins) que dispose un fichier.\\ | ||
+ | \\ | ||
+ | * ''1'' : Quand un fichier n'est pas lié physiquement. | ||
+ | * ''2'' : Indique que ce fichier est lié à un autre fichier. Il dispose alors de 2 noms. | ||
+ | * ''3'' : Indique que ce fichier est lié à deux autres fichiers. Il dispose alors de 3 noms. | ||
+ | * Etc. | ||
+ | </note> | ||
Une autre différence est le partage des droits qui sont là __tout à fait identiques__ entre les fichiers liés physiquement. | Une autre différence est le partage des droits qui sont là __tout à fait identiques__ entre les fichiers liés physiquement. | ||
Ligne 346: | Ligne 345: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 8 | ||
-rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt | -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt | ||
-rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt | -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt | ||
Ligne 359: | Ligne 359: | ||
ls -li | ls -li | ||
</code><code> | </code><code> | ||
+ | total 8 | ||
8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt | 8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 lien2.txt | ||
8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt | 8667149 -rw-r--r-- 2 martin martin 32 déc 15 13:52 test2.txt | ||
Ligne 376: | Ligne 377: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 4 | ||
-rw-r--r-- 1 martin martin 32 déc 15 13:52 lien2.txt | -rw-r--r-- 1 martin martin 32 déc 15 13:52 lien2.txt | ||
</code> | </code> | ||
Ligne 389: | Ligne 391: | ||
ls -l | ls -l | ||
</code><code> | </code><code> | ||
+ | total 0 | ||
</code> | </code> | ||