![Existe maneira de substituir o valor do link simbólico?](https://rvso.com/image/50577/Existe%20maneira%20de%20substituir%20o%20valor%20do%20link%20simb%C3%B3lico%3F%20.png)
Existe uma maneira de substituir o valor de um link simbólico?
Por exemplo, quero alterar um link simbólico deste:
first -> /home/username/foo/very/long/directories/that/I/do/not/want/to/type/again
para isso:
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
Eu quero mudar apenas foo
para bar
.
Claro que posso criar um link novamente, mas se for possível substituir o valor do link fica mais fácil.
Responder1
Você pode usar a opção -f
, para remover o link simbólico existente antes de criar o novo. Se o destino for um diretório, você precisará adicionar a opção , para informar para tratar o link simbólico como um arquivo normal.--force
ln
-n
--no-dereference
ln
ln -sfn target existing_link
No entanto, esta operação não é atômica, assim ln
como unlink()
o antigo link simbólico antes da chamada symlink()
, portanto, tecnicamente, não conta como alteração do valor do link. Se você se preocupa com essa distinção, então a resposta é não, você não pode alterar o valor de um link simbólico existente.
Dito isto, você pode fazer algo como o seguinte para criar um novo link simbólico, alterando parte do valor do link antigo:
ln -sfn "$(readlink existing_link | sed s/foo/bar/)" "existing_symlink"
Responder2
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
Se você estiver executando dentro do X:
stat second
Irá imprimir o link e algumas outras informações. Digite ln -s
e destaque /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
com o cursor do mouse. Pressione o botão do meio (ou ambos os botões, se você tiver apenas dois). A linha longa que você não deseja digitar novamente será colada no cursor de texto.
Se você não estiver no X, poderá fazer a mesma coisa instalando o gpm
.