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.

Marcus Junius Brutus
la source
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)
muru
la source
2

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

SwCharlie
la source
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