![¿Hay alguna forma de reemplazar el valor del enlace simbólico?](https://rvso.com/image/50577/%C2%BFHay%20alguna%20forma%20de%20reemplazar%20el%20valor%20del%20enlace%20simb%C3%B3lico%3F%20.png)
¿Existe alguna forma de reemplazar el valor de un enlace simbólico?
Por ejemplo, quiero cambiar un enlace simbólico de este:
first -> /home/username/foo/very/long/directories/that/I/do/not/want/to/type/again
a esto:
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
Quiero cambiar solo foo
a bar
.
Por supuesto que puedo crear un enlace nuevamente, pero si es posible reemplazar el valor del enlace, será más fácil.
Respuesta1
Puede usar la -f
opción --force
para ln
eliminar el enlace simbólico existente antes de crear uno nuevo. Si el destino es un directorio, debe agregar la -n
opción --no-dereference
para indicarle ln
que trate el enlace simbólico como un archivo normal.
ln -sfn target existing_link
Sin embargo, esta operación no es atómica, como ln
lo será unlink()
el antiguo enlace simbólico antes de llamar symlink()
, por lo que técnicamente no cuenta como cambio del valor del enlace. Si le importa esta distinción, entonces la respuesta es no, no puede cambiar el valor de un enlace simbólico existente.
Dicho esto, puedes hacer algo como lo siguiente para crear un nuevo enlace simbólico, cambiando parte del valor del enlace anterior:
ln -sfn "$(readlink existing_link | sed s/foo/bar/)" "existing_symlink"
Respuesta2
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
Si estás ejecutando dentro de X:
stat second
Imprimirá el enlace y alguna otra información. Escriba ln -s
y luego resalte /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
con el cursor del mouse. Presione el botón central (o ambos botones si solo tiene dos). La línea larga que no querías volver a escribir se pegará en el cursor de texto.
Si no estás en X, puedes hacer lo mismo instalando gpm
.