forzar a cp a copiar en enlaces simbólicos colgantes

15

¿Hay alguna forma de forzar cp(Bash 4.2.5, Ubuntu 12.04) para copiar en un enlace simbólico colgante?

cp a-file path/to/danling/symlink/a-file
cp: not writing through dangling symlink `path/to/danling/symlink/a-file`

cp -f parece ser impotente en este caso y da como resultado el mismo mensaje.

Marcus Junius Brutus
fuente
¿Intentaste usar en su cp -flugar?
Rohith Madhavan
@RohithMadhavan sí; mismo mensaje (acabo de actualizar la pregunta)
Marcus Junius Brutus

Respuestas:

21

Haga cpeliminar el archivo de destino antes de copiar:

$ ln -s /random/file f              
$ cp -f a f                  
cp: not writing through dangling symlink ‘f’
$ cp --remove-destination a f
$ diff a f && echo yes
yes

De man cp:

--remove-destination
      remove  each existing destination file before attempting to open
      it (contrast with --force)
muru
fuente
2

Simplemente use unlink theSymLinkdonde theSymLinkestá el enlace simbólico real, luego intente nuevamente

SwCharlie
fuente
3
Esto funcionará, pero tenga en cuenta que unlinktiene el mismo efecto que (y, por lo tanto, ninguna ventaja en comparación con) el más comúnmente utilizado rm. En particular, como rm foo, unlink fooeliminará un archivo fooincluso cuando es un archivo normal y no un enlace simbólico. Usar en unlinklugar de rm(o mv --remove-destination ...) no protege contra la pérdida accidental de datos.
Eliah Kagan