Lorsque j'ai un lien symbolique pour un dossier, puis que je l'essaie à nouveau avec l'option -sf
, je finis par avoir un autre lien symbolique dans le dossier source d'origine, lui-même lié à lui-même. Pourquoi cela se produit-il et comment puis-je m'assurer que les liens symboliques en double ne sont pas créés?
➜ foo pwd
/home/ubuntu/foo
➜ foo ln -sf ~/foo/bar ~/foo/baz
➜ foo tree
.
├── bar
│ └── test.sh
└── baz -> /home/ubuntu/foo/bar
2 directories, 1 file
➜ foo ln -sf ~/foo/bar ~/foo/baz
➜ foo tree
.
├── bar
│ ├── bar -> /home/ubuntu/foo/bar
│ └── test.sh
└── baz -> /home/ubuntu/foo/bar
3 directories, 1 file
Distro: Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-106-generic x86_64
Shell: zsh avec le plugin Oh my zsh
J'ai fait un peu plus de recherches sur Google et cela me fait penser à utiliser le paramètre -n
comme dans cet article de blog .
Entrée de page de manuel pertinente:
-n, --no-dereference
treat LINK_NAME as a normal file if it is a symbolic link to a directory
Réponses pertinentes d'autres communautés avec de meilleures explications:
https://superuser.com/a/1061057/373342
https://superuser.com/a/645847/373342
La réponse dont vous avez besoin est la suivante: n'utilisez pas -f
si vous ne voulez pas écraser quelque chose qui existe déjà.
Sans ce paramètre, vous obtiendrez un message vous indiquant:
ln: failed to create symbolic link 'your/link': File exists
Le -n
n'est en aucun cas nécessaire, à moins que vous ne vouliez créer un lien du même nom à l'intérieur du répertoire de liens pointé.