web-dev-qa-db-fra.com

Un lien symbolique vers un lien symbolique existant crée un autre lien symbolique dans le répertoire actuel

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

1
Wordzilla

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

3
Wordzilla

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é.

1
Ziazis