Existe maneira de substituir o valor do link simbólico?

Existe maneira de substituir o valor do link simbólico?

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 foopara 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.--forceln-n--no-dereferenceln

ln -sfn target existing_link

No entanto, esta operação não é atômica, assim lncomo 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 -se destaque /home/username/bar/very/long/directories/that/I/do/not/want/to/type/againcom 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.

informação relacionada