Я хочу изменить пункт назначения существующей символической ссылки, не удаляя ссылку или старый пункт назначения.
Ранее я создал символическую ссылку на каталог, например:
$ 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/
Любая помощь ?
command-line
symbolic-link
Сейед Мухаммед
источник
источник
sudo ln -s jdk1.7.0_04/ oracle-jdk-7
. Обратите внимание на косую черту после04
.Ответы:
Чтобы создать символическую ссылку на каталог , используйте параметр «n»:
DESTINATION_DIRECTORY
имя цели ссылки;LINK_NAME
это имя ссылки.f
Вариант означает заменить существующую ссылку (т.е. удалить его первым).n
Вариант немного сложнее. Я полагаю, что ваша команда, возможно, создала ссылкуjdk1.7.0_07
внутри каталогаjdk1.7.0_04
,oracle-jdk-7
но не заменила ссылку. Если это так, вы должны удалить ссылку, чтобы избежать путаницы.источник
T
, то естьln -sfT TARGET LINK_NAME