forza cp a copiare su symlink penzolanti


15

C'è un modo per forzare cp(Bash 4.2.5, Ubuntu 12.04) a copiare su un symlink penzolante?

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

cp -f sembra essere impotente in questo caso e genera lo stesso messaggio.


Hai provato a usare cp -finvece?
Rohith Madhavan,

@RohithMadhavan yep; stesso messaggio (ho appena aggiornato la domanda)
Marcus Junius Brutus,

Risposte:


21

Rendere cprimuovere il file di destinazione prima di copiare:

$ 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

Da man cp:

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

2

Usa solo unlink theSymLinkdove si theSymLinktrova il link simbolico effettivo, quindi riprova


3
Funzionerà, ma nota che unlinkha lo stesso effetto di (e quindi nessun vantaggio rispetto a) il più comunemente usato rm. In particolare, come rm foo, unlink fooeliminerà un file fooanche quando si tratta di un file normale e non di un collegamento simbolico. L'uso al unlinkposto di rm(o mv --remove-destination ...) non protegge dalla perdita accidentale di dati.
Eliah Kagan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.