Je souhaite modifier la destination d'un lien symbolique existant, sans supprimer le lien ou l'ancienne destination.
J'ai déjà créé un lien symbolique vers un répertoire tel que:
$ 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 ceci, 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 ?
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.f
signifie remplacer le lien existant (c.-à-d. Le supprimer en premier).L'option n
est un peu compliquée. Je pense que votre commande a peut-être créé un lien vers jdk1.7.0_07
dans le répertoire jdk1.7.0_04
, via le lien Oracle-jdk-7
au lieu de remplacer le lien. Si tel est le cas, vous devez supprimer le lien pour éviter toute confusion.