Чтобы изменить символическую ссылку, можно использовать опцию -fs, чтобы исключить необходимость сначала удалить или удалить старую ссылку. Однако попытка сделать это для каталогов, похоже, не работает:
$ mkdir dir1
$ mkdir dir2
$ ln -s dir1 lnk
$ ln -sf dir2 lnk
$ ll
......... lnk -> dir1
$
Почему так? Есть ли другой способ сделать это с каталогами так же, как с файлами?
По умолчанию, если вы передадите каталог (или символическую ссылку на каталог) в качестве второго аргумента команды ln
, он создаст внутри этого каталога ссылку с тем же именем, что и у первого аргумента. Таким образом, с набором команд, которые вы дали, вы должны найти символическую ссылку с именем dir2
внутри dir1
.
Вы можете изменить это поведение, используя опцию -T
:
-T, --no-target-directory
treat LINK_NAME as a normal file
Если вы передадите эту опцию во втором вызове ln
, тогда она должна перезаписать символическую ссылку lnk
, а не создавать новая символическая ссылка внутри первого каталога.