forcer cp à copier sur les liens symboliques pendants


15

Existe-t-il un moyen de forcer cp(Bash 4.2.5, Ubuntu 12.04) à copier sur un lien symbolique suspendu?

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

cp -f semble être impuissant dans ce cas et entraîne le même message.


Avez-vous essayé d'utiliser à la cp -fplace?
Rohith Madhavan

@RohithMadhavan yep; même message (je viens mis à jour la question)
Marcus Junius Brutus

Réponses:


21

Faites cpsupprimer le fichier cible avant de le copier:

$ 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

Utilisez simplement l' unlink theSymLinkemplacement theSymLinkdu lien symbolique réel, puis réessayez


3
Cela fonctionnera, mais notez que cela unlinka le même effet (et donc aucun avantage par rapport à) les plus couramment utilisés rm. En particulier, comme rm foo, unlink foosupprimera un fichier foomême s'il s'agit d'un fichier normal et non d'un lien symbolique. L'utilisation unlinkde rm(ou mv --remove-destination ...) ne protège pas contre la perte accidentelle de données.
Eliah Kagan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.