Ln
ln, je m'appelle ln, je suis commande unix pas comme les autres ... Cette commande crée des liens (links). Les unixiens y sont attachés malgré qu'elle veuille par défaut créer des liens matériels (ndlr: toutes les memes) alors que la plupart du temps ils veulent des liens symboliques (mais pas platoniques).
remplacer un lien symbolique par un autre
Pour remplacer un lien symbolique à la volée, il faut forcer (-f) et comme c'est un dossier on rajoute -n (--no-dereference), la preuve :
$ ls -l lrwxrwxrwx 1 toto toto 16 2012-10-14 21:07 mabib -> ma-bib-version7/ $ ln -sv ma-bib-version12 mabib ln: creating symbolic link `mabib/ma-bib-version12': File exists
okay, bon on force :
$ ln -sfv ma-bib-version12 mabib `mabib/ma-bib-version7' -> `ma-bib-version7' $ ls -l lrwxrwxrwx 1 toto toto 15 2012-10-14 21:32 mabib -> ma-bib-version7 ...

Ca n'a pas fonctionné, wtf? Ca pointe toujours sur l'ancienne et en plus ça a créé un lien symbolique dans le dossier !
ls -l ma-bib-version7/ lrwxrwxrwx 1 toto toto 16 2012-10-14 22:24 ma-bib-version12 -> ma-bib-version12
Il faut préciser à ln, qu'elle doit détruire l'ancien lien et non pas en créér un nouveau dans ce qu'elle pense etre un dossier normal. Cela se précise avec l'option --no-dereference (raccourcis : -n) :
$ ln -sfvn ma-bib-version12 mabib `mabib' -> `ma-bib-version12'
$ ls -l lrwxrwxrwx 1 toto toto 16 2012-10-14 21:08 mabib -> ma-bib-version12/
Attention : la cible peut aussi bien etre soit un fichier et il sera écrasé, soit un dossier et un lien mort sera créé dedans :
Si mabib est déjà est dossier, -v vous montrera l'erreur :
`mabib/ma-bib-version12' -> `ma-bib-version12'
Si mabib est déjà un fichier, il sera écrasé silencieusement :
`mabib' -> `ma-bib-version12'
cloning machine
<source lang="bash">
touch Scratchy; while true; do ln Scratchy Clone; echo Cloned; rm Clone; echo Killed; done;
</source>