Quero alterar o destino de um link simbólico existente, sem remover o link ou o destino antigo.
Eu criei anteriormente um link simbólico para um diretório da seguinte maneira:
$ 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/
Agora eu quero mudar isso, para vincular ao outro diretório:
$ sudo ln --force -s jdk1.7.0_07 oracle-jdk-7
Mas não funciona sem erros:
$ 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/
Qualquer ajuda ?
command-line
symbolic-link
Seyed Mohammad
fonte
fonte
sudo ln -s jdk1.7.0_04/ oracle-jdk-7
. Observe a barra depois04
.Respostas:
Para criar um link simbólico para um diretório , use a opção 'n':
DESTINATION_DIRECTORY
é o nome do destino do link;LINK_NAME
é o nome do link.f
opção significa substituir o link existente (ou seja, excluí-lo primeiro).A
n
opção é um pouco complicada. Acredito que seu comando pode ter criado um link parajdk1.7.0_07
dentro do diretóriojdk1.7.0_04
, através do link, emoracle-jdk-7
vez de substituí-lo. Nesse caso, você deve excluir o link para evitar confusão.fonte
T
, ou sejaln -sfT TARGET LINK_NAME