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.


¿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)

2

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.