Impossible de modifier la destination du lien symbolique

21

Je souhaite modifier la destination d'un lien symbolique existant, sans supprimer le lien ou l'ancienne destination.

J'ai précédemment créé un lien symbolique vers un répertoire comme suit:

$ 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/

Maintenant, je veux changer cela, pour créer un lien vers l'autre répertoire:

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

Mais cela ne fonctionne pas sans erreur:

$ 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/

De l'aide ?

Seyed Mohammad
la source
C'est peut-être un petit détail, mais cela ressemble à la commande que vous avez exécutée sudo ln -s jdk1.7.0_04/ oracle-jdk-7. Notez la barre oblique après 04.
wjandrea

Réponses:

31

Pour créer un lien symbolique vers un répertoire , utilisez l'option 'n':

ln -sfn DESTINATION_DIRECTORY LINK_NAME
  • DESTINATION_DIRECTORY est le nom de la cible du lien;
  • LINK_NAME est le nom du lien.
  • L' foption signifie remplacer le lien existant (c'est-à-dire le supprimer d'abord).

L' noption est un peu compliquée. Je crois que votre commande peut avoir créé un lien vers l' jdk1.7.0_07intérieur du répertoire jdk1.7.0_04, via le lien oracle-jdk-7plutôt que de remplacer le lien. Si c'est le cas, vous devez supprimer le lien pour éviter toute confusion.

Marty Fried
la source
Vous pouvez également utiliser l'option T, c'estln -sfT TARGET LINK_NAME
wjandrea