Substituir link simbólico que vinculou ao destino do diretório

13

Desejo atualizar o servidor do tomcat de 7.0.19 para 7.0.20.

Eu já tenho ln -s apache-tomcat-7.0.19 tomcat7 , então agora preciso vincular tomcat7 ao novo alvo usando o seguinte comando ln -s --force apache-tomcat-7.0.21 tomcat7 , mas ele não funcionou como eu esperava: criou um link simbólico tomcat7/apache-tomcat-7.0.21 em vez de substituir o link simbólico tomcat7 existente por um novo destino.

Exemplo

# mkdir v1 v2
# ln -s v1 v
# ln -s v2 v
# ll v*
lrwxrwxrwx. 1 root root    2 Sep  5 16:02 v -> v1

v1:
total 0
lrwxrwxrwx. 1 root root 2 Sep  5 16:02 v2 -> v2

v2:
total 0

Eu verifiquei o manual de ln , acho que ln -s --force apache-tomcat-7.0.21 tomcat7 usa o terceiro formulário em vez do primeiro forma de explicar os parâmetros. Isso é tão ambíguo entre a 1ª e a 3ª forma. Então, como substituir o link simbólico neste caso?

    
por LiuYan 刘研 05.09.2011 / 10:41

3 respostas

14

Você quer a opção -T :

$ mkdir v1
$ ln -s v1 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:58 foo -> v1/
$ mkdir v2
$ ln -s -T -f v2 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:59 foo -> v2/
    
por 05.09.2011 / 11:00
10

Ao substituir links simbólicos para diretórios, devemos usar a opção -n .

Exemplo: ln -sfn /path/to/directory /target/directory

    
por 28.01.2015 / 06:40
3

Por que não apenas

rm tomcat7
ln -s apache-tomcat-7.0.21 tomcat7

?

Isso não tocará no diretório antigo apache-tomcat-7.0.19, mas apenas excluirá o link antigo. Então eu posso criar o novo.

    
por 05.09.2011 / 10:44