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 Prochaine révision Les deux révisions suivantes | ||
doc:systeme:ln [16/12/2012 02:03] martin_mtl [Modification du nom des fichiers liés :] |
doc:systeme:ln [13/04/2015 19:28] milou [LN] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== LN ====== | ====== LN ====== | ||
+ | * Objet: commande ln | ||
+ | * Niveau requis :{{tag>débutant avisé}} | ||
+ | * Commentaires : // Permet de créer des liens physiques ou symboliques // | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * [[:doc:programmation:shell:chevrons | La commande chevron ">"]] | ||
+ | * [[:doc:systeme:ls | La commande LS]] | ||
+ | * [[:doc:systeme:rm | La commande RM]] | ||
+ | * [[:doc:systeme:droits-unix | Les Droits]] | ||
+ | * [[:doc:editeurs:nano | La commande d'édition NANO]] | ||
+ | * Suivi : {{tag>à-compléter}}{{tag>à-tester}} | ||
+ | * Création par [[user>smolski]] le 21/06/2010 | ||
+ | * Testé par .... le .... | ||
+ | * 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 !)) | ||
+ | =====Introduction===== | ||
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. | ||
Ligne 22: | Ligne 36: | ||
+ | **ATTENTION :** Un lien physique à la particularité de devoir se situer __sur le même système de fichier__ que sa cible ! | ||
===== Description ===== | ===== Description ===== | ||
Ligne 45: | Ligne 60: | ||
Débutant - À savoir : | Débutant - À savoir : | ||
- | * [[commande:> | La commande chevron ">"]] | + | * [[:doc:programmation:shell:chevrons | La commande chevron ">"]] |
- | * [[commande:ls | La commande LS]] | + | * [[:doc:systeme:ls | La commande LS]] |
- | * [[commande:rm | La commande RM]] | + | * [[:doc:systeme:rm | La commande RM]] |
- | * [[commande:a_savoir | Les Droits]] | + | * [[:doc:systeme:droits-unix | Les Droits]] |
- | * [[commande:mv | La commande MV]] | + | * [[:doc:editeurs:nano | La commande d'édition NANO]] |
- | * [[commande:pwd | La commande PWD]] | + | |
- | * [[manuel:nano | La commande d'édition 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.// :-) | //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.// :-) | ||
Ligne 58: | Ligne 71: | ||
==== Créer les répertoires et fichiers tests que nous allons utiliser ==== | ==== 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 [[commande:mkdir|mkdir]] et s'y positionner avec [[commande: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]] : |
- | $ cd ~ | + | <code user>cd ~</code> |
- | $ mkdir test_lien | + | <code user>mkdir test_lien</code> |
- | $ cd test_lien/ | + | <code user>cd test_lien/</code> |
test_lien$ | test_lien$ | ||
- | Créer dans ce répertoire un fichiers vide, //test1.txt//, avec [[commande:touch|touch]], puis ajoutez-y le texte //Bonjour toto// avec la commande [[commande:echo|echo]]. | + | Créer dans ce répertoire un fichiers vide, //test1.txt//, avec [[:doc:systeme:touch|touch]], puis ajoutez-y le texte //Bonjour toto// avec la commande [[:doc:systeme:echo|echo]]. |
- | test_lien$ touch test1.txt | + | <code user>test_lien$ touch test1.txt</code> |
- | test_lien$ echo Bonjour Jojo > test1.txt | + | <code user>test_lien$ echo Bonjour Jojo > test1.txt</code> |
- | On vérifie avec la commande [[commande:cat|cat]] que notre texte est bien écrit dans le fichier test1.txt : | + | On vérifie avec la commande [[:doc:systeme:cat|cat]] que notre texte est bien écrit dans le fichier test1.txt : |
- | test_lien$ cat test1.txt | + | <code user>test_lien$ cat test1.txt |
- | Bonjour Jojo | + | Bonjour Jojo</code> |
==== Créer un lien symbolique (symlink) : ==== | ==== Créer un lien symbolique (symlink) : ==== | ||
Situation de départ : | Situation de départ : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 89: | Ligne 102: | ||
On crée le lien symbolique : | On crée le lien symbolique : | ||
- | test_lien$ ln -s test1.txt lien1.txt | + | <code user>test_lien$ ln -s test1.txt lien1.txt</code> |
Ce qui nous fait maintenant : | Ce qui nous fait maintenant : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 115: | Ligne 128: | ||
==== Modification du contenu des fichiers liés ==== | ==== Modification du contenu des fichiers liés ==== | ||
- | test_lien$ echo Comment vas-tu ? >> lien1.txt | + | <code user>test_lien$ echo Comment vas-tu ? >> lien1.txt</code> |
- | test_lien$ cat lien1.txt | + | <code user>test_lien$ cat lien1.txt |
- | Bonjour toto | + | Bonjour toto |
- | Comment vas-tu ? | + | Comment vas-tu ?</code> |
- | test_lien$ cat test1.txt | + | <code user>test_lien$ cat test1.txt |
- | Bonjour toto | + | Bonjour toto |
- | Comment vas-tu ? | + | Comment vas-tu ?</code> |
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 142: | Ligne 155: | ||
À l'aide de la commande ''ls -li'', nous pouvons voir l'occupation disque générée par un lien //symlink// en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : | À l'aide de la commande ''ls -li'', nous pouvons voir l'occupation disque générée par un lien //symlink// en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -li | martin@madebian:~/test_lien$ ls -li | ||
total 4 | total 4 | ||
Ligne 155: | Ligne 168: | ||
L'effacement du fichier symbole ''lien1.txt'' ne détruit ni le contenu, ni l'apparence du fichier cible ''test1.txt'' : | L'effacement du fichier symbole ''lien1.txt'' ne détruit ni le contenu, ni l'apparence du fichier cible ''test1.txt'' : | ||
- | test_lien$ rm lien1.txt | + | <code user>test_lien$ rm lien1.txt</code> |
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 166: | Ligne 179: | ||
Recréons le même fichier symbole //lien1.txt// : | Recréons le même fichier symbole //lien1.txt// : | ||
- | test_lien$ ln -s test1.txt lien1.txt | + | <code user>test_lien$ ln -s test1.txt lien1.txt</code> |
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 177: | Ligne 190: | ||
=== Modifier le nom du fichier symbole === | === Modifier le nom du fichier symbole === | ||
- | Modifions le nom du fichier symbole lien1.txt à l'aide de la [[commande:mv |commande mv]] : | + | Modifions le nom du fichier symbole lien1.txt à l'aide de la [[:doc:systeme:mv |commande mv]] : |
- | test_lien$ mv lien1.txt lien2.txt | + | <code user>test_lien$ mv lien1.txt lien2.txt</code> |
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 190: | Ligne 203: | ||
<note>Pour poursuivre cette illustration dans la clarté, remettons le nommage du fichier symbole ''lien2.txt'' en ''lien1.txt''.</note> | <note>Pour poursuivre cette illustration dans la clarté, remettons le nommage du fichier symbole ''lien2.txt'' en ''lien1.txt''.</note> | ||
- | test_lien$ mv lien2.txt lien1.txt | + | <code user>test_lien$ mv lien2.txt lien1.txt</code> |
=== Modifier le nom du fichier cible === | === Modifier le nom du fichier cible === | ||
Modifions le nom du fichier cible ''test1.txt'' : | Modifions le nom du fichier cible ''test1.txt'' : | ||
- | test_lien$ mv test1.txt test2.txt | + | <code user>test_lien$ mv test1.txt test2.txt</code> |
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 214: | Ligne 227: | ||
Pour la suite du tuto, choisir de remettre le fichier en test1.txt | Pour la suite du tuto, choisir de remettre le fichier en test1.txt | ||
- | test_lien$ mv test2.txt test1.txt | + | <code user>test_lien$ mv test2.txt test1.txt</code> |
==== Modifications des droits des fichiers liés : ==== | ==== Modifications des droits des fichiers liés : ==== | ||
Ligne 228: | Ligne 241: | ||
Situation de départ : | Situation de départ : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 235: | Ligne 248: | ||
</code> | </code> | ||
- | En terminal root, changez les droits sur le fichier avec la commande [[commande:chmod|chmod]] : | + | En terminal root, changez les droits sur le fichier avec la commande [[:doc:systeme:chmod|chmod]] : |
- | test_lien# chmod 700 lien1.txt | + | <code root>test_lien# chmod 700 lien1.txt</code> |
On obtient alors : | On obtient alors : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 4 | total 4 | ||
Ligne 259: | Ligne 272: | ||
Mais outre d'évoluer à l'identique, comme avec un lien symbolique, les deux fichiers se nourrissent mutuellement et concrètement de toutes les modifications apportées à l'un ou à l'autre. | Mais outre d'évoluer à l'identique, comme avec un lien symbolique, les deux fichiers se nourrissent mutuellement et concrètement de toutes les modifications apportées à l'un ou à l'autre. | ||
- | <note important>**ATTENTION :** Un lien physique à la particularité de devoir se situer __sur le même système de fichier__ que sa cible !</note> | ||
+ | <note important>**ATTENTION :** Un lien physique à la particularité de devoir se situer __sur le même système de fichier__ que sa cible !</note> | ||
==== Créer un lien physique ==== | ==== Créer un lien physique ==== | ||
Commençons par supprimer les fichiers liés symboliquement et créer un fichier de départ vide, test2, : | Commençons par supprimer les fichiers liés symboliquement et créer un fichier de départ vide, test2, : | ||
- | test_lien$ rm *1.txt | + | <code user>test_lien$ rm *1.txt |
- | touch test2.txt | + | touch test2.txt</code> |
Au départ, nous avons donc la situation suivante : | Au départ, nous avons donc la situation suivante : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -l | martin@madebian:~/test_lien$ ls -l | ||
total 0 | total 0 | ||
Ligne 275: | Ligne 288: | ||
Pour créer un lien physique, on utilise la commande ''ln'' sans l'option ''-s''. | Pour créer un lien physique, on utilise la commande ''ln'' sans l'option ''-s''. | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ln test2.txt lien2.txt | martin@madebian:~/test_lien$ ln test2.txt lien2.txt | ||
- | martin@madebian:~/test_lien$ ls -l | + | martin@madebian:~/test_lien$ ls -lv |
total 0 | 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 | ||
Ligne 300: | Ligne 313: | ||
Ajoutons du contenu dans l'un puis un second ajout dans l'autre des fichiers liés //physiquement// en vérifiant les contenus à chaque fois : | Ajoutons du contenu dans l'un puis un second ajout dans l'autre des fichiers liés //physiquement// en vérifiant les contenus à chaque fois : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ echo Très bien titi ! > lien2.txt | martin@madebian:~/test_lien$ echo Très bien titi ! > lien2.txt | ||
Ligne 328: | Ligne 341: | ||
À l'aide de la commande ''ls -li'', nous pouvons voir l'occupation disque générée par un lien //hardlink// en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : | À l'aide de la commande ''ls -li'', nous pouvons voir l'occupation disque générée par un lien //hardlink// en constatant les chiffres indiquant les index respectifs des inodes de chacun des fichiers liés : | ||
- | <code> | + | <code user> |
martin@madebian:~/test_lien$ ls -li | martin@madebian:~/test_lien$ ls -li | ||
total 8 | total 8 | ||
Ligne 344: | Ligne 357: | ||
Suppression du fichier cible ''test2.txt'' : | Suppression du fichier cible ''test2.txt'' : | ||
- | <code> | + | <code user> |
test_lien$ rm test2.txt | test_lien$ rm test2.txt | ||
Ligne 357: | Ligne 370: | ||
Pour supprimer définitivement les deux fichiers et leurs contenus, nous devons les effacer tous deux. | Pour supprimer définitivement les deux fichiers et leurs contenus, nous devons les effacer tous deux. | ||
- | test_lien$ rm *2.txt | + | <code user>test_lien$ rm *2.txt</code> |
- | test_lien$ ls -l | + | <code user>test_lien$ ls -l |
- | total 0 | + | total 0</code> |
//Voilà pour la commande //''ln''// dans tous ses états !// | //Voilà pour la commande //''ln''// dans tous ses états !// | ||
- | |||
\\ | \\ | ||
\\ | \\ | ||
- | |||
//Merci au //**captnfab**// pour sa bienveillante et rigolote attention !// :-D | //Merci au //**captnfab**// pour sa bienveillante et rigolote attention !// :-D | ||
+ | ===== Conclusion ===== | ||
+ | |||
+ | Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs répertoires, ou sous un nom différent. | ||
+ | |||
+ | Si le fichier a une assez grande taille vous pouvez envisager, au lieu de copier dans un répertoire donné, de créer un lien réduisant ainsi l'utilisation d'espace disque. | ||
+ | |||
+ | Autre point très intéressant, créer des liens, au lieu de copier les fichiers, assure que toute modification dans un fichier se retrouvera bien dans les « copies » dispersées un peu partout. | ||