¿Cómo reemplazar un enlace simbólico con una copia de un archivo al que se vincula?

15

Teniendo un enlace simbólico (único, no se necesita procesamiento de sistema de archivos por lotes), ¿qué línea de comando usar para reemplazarlo con una copia del archivo al que se vincula?

Ivan
fuente

Respuestas:

16
cp --remove-destination "$(readlink <symlink>)" <symlink>
Ignacio Vazquez-Abrams
fuente
1
error "-bash: error de sintaxis cerca del token inesperado 'nueva línea'" cuando se ejecuta desde un entorno debian.
Lin Song Yang
Si <symlink>es un enlace simbólico a una ruta relativa, eso solo funciona si <symlink>está en el directorio actual. Es posible que desee utilizar readlink -f. O si usa zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Stéphane Chazelas
0

Podrías hacerlo:

file=path/to/symlink
{ rm -f -- "$file" && cat > "$file"; } < "$file"

(que solo copia el contenido, no los metadatos del archivo, como los permisos y la propiedad).

Stéphane Chazelas
fuente