La commande ln -s

L’année dernière, j’ai découvert une ligne de commande Unix bien pratique : ln -s. Cette commande permet de créer un lien symbolique vers un fichier ou un dossier. Un lien symbolique, c’est une référence à un fichier ou dossier qui correspond fonctionnellement au fichier ou dossier original. Grossièrement, ça permet de retrouver un même dossier à plusieurs endroits sur son ordinateur sans avoir à le dupliquer.

Ça peut paraître tordu de vouloir retrouver un même dossier à plusieurs endroits, mais ça correspond pile poile à mon organisation. Je travaille souvent sur des petits projets d’intégration (des newsletters, des pages d’opérations commerciales, etc.) qui ne nécessitent pas de contrôleur de sources. En général, je vais me retrouver avec l’organisation suivante :

  • Un dossier « ~/Boulot/Client/Nom_du_projet/ » avec à l’intérieur un dossier « Elements » (avec les fichiers envoyés par le client), un dossier « PSD » (avec les maquettes) et un dossier « HTML » (avec mon intégration).
  • Un dossier sur mon serveur local dans « /Applications/MAMP/htdocs/Nom_du_projet », pour pouvoir tester la page dans de bonnes conditions.
  • Eventuellement une sauvegarde dans mon dossier « ~/Dropbox », par précaution, et au cas où j’aurais besoin d’accéder à mes fichiers sur une machine différente chez moi.

Grâce à la commande ln -s, je peux retrouver mes fichiers dans ces 3 dossiers sans avoir à les dupliquer. Ainsi, il me suffit de taper dans le Terminal les deux commandes suivantes :

ln -s ~/Boulot/Client/Nom_du_projet/ /Applications/MAMP/htdocs/Nom_du_projet
ln -s ~/Boulot/Client/Nom_du_projet/ ~/Dropbox/Nom_du_projet

Et le tour est joué ! A noter que sous Windows, la commande mklink permet d’obtenir un résultat similaire.

  1. Mandragora, le

    Juste un petit commentaire : le lien vers Dopbox est inutile car tu sauvegardes juste le lien et non le contenu vers lequel pointe le lien…

  2. Rémi, le

    Justement non, et c’est là la différence avec un raccourci classique.

  3. Cedric, le

    Merci !!!
    Même si c’est trop tard maintenant, c’est exactement cette commande que je cherchais la semaine dernière pour ne pas avoir à dupliquer mes dossiers entre Apache, dropbox etc.
    Apache ne prend pas en compte les raccourcis (ou plutôt « Alias ») sous OS X. Du coup, cela ne sert à rien de créer un raccourci via le Finder dans le dossier WWW, il ne sera pas pris en compte sur le HTTP. Comme un con, j’ai du faire à l’ancienne mes modifs pour les dupliquer dans chaque repertoire.
    Je savais bien qu’il existait les liens symboliques, différents des raccourcis, mais j’avais complètement oublié cette commande pourtant souvent utilisée quand on apprend à bosser sous Linux/UNIX… Content de l’avoir retrouvé.

  4. koldkoze, le

    Sous Linux, tu as raison, mais l’équivalent Windows ne fonctionne pas, notamment pour Dropbox.

  5. pauland, le

    Je ne m’en sers pas tous les jours, mais c’est effectivement pratique (c’est dans le clique droit sur ubuntu )

  6. h1fra, le

    Je confirme, pour dropbox ça marche et c’est bien utile, sous windows 7 64bit (en tout cas) aucun problème, avec plusieurs ordinateur relier par le logiciel.
    J’ai même carrément partager tout mon serveur local de cette façon.

  7. Michael, le

    @koldkoze: mklink crée un lien symbolique, et pas un raccourci windows. Ça devrait donc en théorie fonctionner…

    Il peut être utile de mentionner le lien « hard » (soit la commande ‘ln’) qui crée une sorte de référence à un fichier à un autre endroit de l’arborescence directement dans le système de fichiers. Ca ne fonctionne donc pas d’une partition à l’autre, mais lorsqu’on supprime le fichier source, il est toujours existant car il est référencé à un autre endroit…

  8. MarcoAix, le

    Perso, je laisse tous mes sites dans le dossier dédié du Mac, et je fais des liens symboliques (effectivement les alias Mac ne fonctionneraient pas) dans le dossier htdocs de MAMP. Du coup les adresses locales sont très simples et je fais pointer ça dans x sous-dossiers si nécessaire :-)

  9. bfontaine, le

    Il y a aussi la commande ln tout court qui permet de faire des liens physiques (chose qui n’existe pas sous Windows à ma connaissance), i.e. un même fichier sous deux (ou plus) noms différents, donc chemins différents.