Когда я имею символьную ссылку для папки и затем пробую ее снова -sf
опция я заканчиваю тем, что имел другую символьную ссылку в папке первоисточника symlinking к себе. Почему это происходит и как я удостоверяюсь, что дублирующиеся символьные ссылки не создаются?
➜ 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
Дистрибутив: Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-106-универсальный x86_64
оболочка: zsh с, О, моим zsh плагином
Я сделал еще несколько поисков в Google, и это указывает на то, что я должен использовать параметр -n
, как в в этом сообщении в блоге .
Соответствующая запись в справочной странице:
-n, --no-dereference
treat LINK_NAME as a normal file if it is a symbolic link to a directory
Соответствующие ответы других сообществ с лучшими объяснениями:
https://superuser.com/a/1061057/373342
https://superuser.com/a/645847/373342
Фактический ответ, в котором Вы нуждаетесь, не используйте -f
, если Вы не хотите на самом деле перезаписывать что-то уже существующее.
Без того параметра Вы на самом деле получили бы сообщение, которое говорит Вам:
ln: failed to create symbolic link 'your/link': File exists
Эти -n
, ни в коем случае я не мог думать необходимый, если Вы не хотите создать ссылку с тем же именем в каталоге ссылки, на который указывают.