Como excluir ou substituir um link simbólico já criado?

53

Estou trabalhando no meu projeto usando o simulador de rede2. Eu instalei e está tudo bem. Tentei criar um link simbólico entre esta instalação e /usr/bin, para poder chamar o software, executando a nspartir da linha de comando. Ou seja, eu corri:

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns

que gerou a seguinte saída:

ln: creating symbolic link '/usr/bin/ns': File exists


Como excluir o link simbólico já criado ou substituí-lo por outros comandos?

Vinay
fonte
Eu estava tentando fazer sudo ln -s destination source, e é claro que isso ocorreu. Obrigado pela resposta.
Aviggiano 07/06

Respostas:

35
sudo rm -r /usr/bin/ns

sudo ln -s /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
Pawełkowy
fonte
11
o acima falhará se ns for uma pasta - nesse caso, use o rm -rf (comutadores de força recursivos) - nesse caso, você também poderá usar os comutadores -sf para ln.
Finley
@finley Sim, você está certo. Incase ns é uma pasta, não pode ser excluída. Agora é ambíguo para mim que podemos criar um link simbólico para uma pasta.
Vinay
11
sim, podemos criar um link simbólico para uma pasta. Se for uma pasta, você pode fazer: sudo rm -r / usr / bin / ns
Pawełkowy
@Pawel Criei um link simbólico para a pasta com sucesso. Eu posso até remover como vc disse acima. Mas, quando digito o nome fold [link simbólico criado para uma pasta] no terminal, ocorre um erro. O que eu realmente pensei foi criar um link simbólico para uma pasta e apenas digitar o terminal do nome do link abriria isso no nautilus. Não tenho certeza se é possível ou não ..?
Vinay
11
@ Vinaychalluru, se você deseja abrir essa pasta, tente digitar: cd fold - ela abrirá em um terminal. Se você deseja abri-lo no nautilus, digite: nautilus fold
Pawełkowy
63

lnpossui -fopção que 'força' a criação de um link simbólico, existindo ou não.

sudo ln -sf /home/vinaychalluru/ns-allinone-2.34/ns-2.34/ns /usr/bin/ns
Finley
fonte
Essa deve ser a resposta aceita.
Rony Varghese
28

Tentei ln -sfsubstituir, mas não funcionou para mim, mas ln -sfn directory link_name como rootfuncionava.

user712092
fonte
Sem -neu estava tendo um problema de loop infinito. Obrigado!
Christopher Markieta
3

Para adicionar todas as respostas acima, um link simbólico pode ser tratado como um arquivo regular em muitos casos (o link, não o destino).

rmem um link simbólico irá removê-lo. Se o link pertencer à raiz, você precisará do sudo.

Você deve conseguir rm /usr/bin/nsou sudo rm /usr/bin/nsnão esquecer a propriedade.

Dmitriy Likhten
fonte