Не удается изменить назначение символической ссылки

21

Я хочу изменить пункт назначения существующей символической ссылки, не удаляя ссылку или старый пункт назначения.

Ранее я создал символическую ссылку на каталог, например:

$ cd /usr/lib/jvm/

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07

$ sudo ln -s jdk1.7.0_04 oracle-jdk-7

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:22  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

Теперь я хочу изменить это, чтобы ссылаться на другой каталог:

$ sudo ln --force -s jdk1.7.0_07 oracle-jdk-7

Но это не работает без каких-либо ошибок:

$ ls -lh
drwxr-xr-x 8 uucp  143 4.0K Sep 10 20:36  jdk1.7.0_04
drwxr-xr-x 8 uucp  143 4.0K Aug 29 05:42  jdk1.7.0_07
lrwxrwxrwx 1 root root   12 May 11 11:27  oracle-jdk-7 -> jdk1.7.0_04/

Любая помощь ?

Сейед Мухаммед
источник
Может быть, это небольшая деталь, но похоже, что вы выполнили команду sudo ln -s jdk1.7.0_04/ oracle-jdk-7. Обратите внимание на косую черту после 04.
wjandrea

Ответы:

31

Чтобы создать символическую ссылку на каталог , используйте параметр «n»:

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY имя цели ссылки;
  • LINK_NAME это имя ссылки.
  • fВариант означает заменить существующую ссылку (т.е. удалить его первым).

nВариант немного сложнее. Я полагаю, что ваша команда, возможно, создала ссылку jdk1.7.0_07внутри каталога jdk1.7.0_04, oracle-jdk-7но не заменила ссылку. Если это так, вы должны удалить ссылку, чтобы избежать путаницы.

Марти Фрид
источник
Вы также можете использовать опцию T, то естьln -sfT TARGET LINK_NAME
wjandrea