Chcę zmienić miejsce docelowe istniejącego łącza symbolicznego, bez usuwania łącza lub starego miejsca docelowego.
Wcześniej utworzyłem symboliczne łącze do katalogu, takie jak:
$ 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/
Teraz chcę to zmienić, aby przejść do innego katalogu:
$ sudo ln --force -s jdk1.7.0_07 oracle-jdk-7
Ale to nie działa bez żadnych błędów:
$ 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/
Jakaś pomoc ?
command-line
symbolic-link
Seyed Mohammad
źródło
źródło
sudo ln -s jdk1.7.0_04/ oracle-jdk-7
. Zwróć uwagę na slash po04
.Odpowiedzi:
Aby utworzyć symboliczne łącze do katalogu , użyj opcji „n”:
DESTINATION_DIRECTORY
to nazwa celu linku;LINK_NAME
to nazwa linku.f
Opcja oznacza zastąpienie istniejącego łącza (czyli usunąć go wcześniej).Ta
n
opcja jest nieco skomplikowana. Wydaje mi się, że twoje polecenie mogło utworzyć link dojdk1.7.0_07
katalogujdk1.7.0_04
, za pośrednictwem linkuoracle-jdk-7
zamiast go zastępować. Jeśli tak, należy usunąć link, aby uniknąć nieporozumień.źródło
T
, tj.ln -sfT TARGET LINK_NAME