Symlink для существующей символической ссылки создает другую символическую ссылку в текущем каталоге

Когда у меня есть символическая ссылка для папки, а затем повторите попытку с помощью опции -sf, я получаю еще одну символическую ссылку в исходной исходной папке, символизирующую ее. Почему это происходит и как я могу убедиться, что дублирующие символические ссылки не созданы?

➜ 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 with Oh мой zsh-плагин

0
задан 18 May 2017 в 13:40

4 ответа

Я сделал еще несколько поисковых запросов, и он указывает мне на использование параметра -n, как в этом сообщении в блоге.

Соответствующая запись в manpage:

-n, --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a directory

Соответствующие ответы от других сообщества с лучшими объяснениями:

это сообщение в блоге https://superuser.com/a/645847/373342

2
ответ дан 18 July 2018 в 13:06

Фактический ответ, который вам нужен, не используйте -f, если вы не хотите перезаписывать что-то уже существующее.

Без этого параметра вы действительно получите сообщение, сообщающее вам:

ln: failed to create symbolic link 'your/link': File exists

-n - я ни в коем случае не мог подумать о необходимости, если вы не хотите создать ссылку с тем же именем внутри ссылки, указанной в каталоге. [ ! d3]

1
ответ дан 18 July 2018 в 13:06

Я сделал еще несколько поисковых запросов, и он указывает мне на использование параметра -n, как в этом сообщении в блоге.

Соответствующая запись в manpage:

-n, --no-dereference treat LINK_NAME as a normal file if it is a symbolic link to a directory

Соответствующие ответы от других сообщества с лучшими объяснениями:

это сообщение в блоге https://superuser.com/a/645847/373342

2
ответ дан 24 July 2018 в 20:06

Фактический ответ, который вам нужен, не используйте -f, если вы не хотите перезаписывать что-то уже существующее.

Без этого параметра вы действительно получите сообщение, сообщающее вам:

ln: failed to create symbolic link 'your/link': File exists

-n - я ни в коем случае не мог подумать о необходимости, если вы не хотите создать ссылку с тем же именем внутри ссылки, указанной в каталоге. [ ! d3]

1
ответ дан 24 July 2018 в 20:06
  • 1
    Я столкнулся с ситуацией, когда дважды запускал один и тот же сценарий для целей тестирования и имел параметры как -sf. Мне нужно -f, хотя, поскольку мне нужно связать с другим каталогом с тем же именем в развертывании, чтобы я мог указать текущую папку в последнюю папку для каждого развертывания. Ваш ответ тоже имеет смысл. Благодарю. – Wordzilla 18 May 2017 в 14:16

Другие вопросы по тегам:

Похожие вопросы: