Erzwinge das Kopieren von cp auf baumelnde Symlinks


15

Gibt es eine Möglichkeit, cpdas Kopieren auf einen baumelnden Symlink zu erzwingen (Bash 4.2.5, Ubuntu 12.04)?

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

cp -f scheint in diesem Fall ohnmächtig zu sein und führt zu der gleichen Botschaft.


Hast du es cp -fstattdessen versucht ?
Rohith Madhavan

@RohithMadhavan yep; gleiche Nachricht (Ich habe gerade die Frage aktualisiert)
Marcus Junius Brutus

Antworten:


21

Machen Sie cpdie Zieldatei entfernen , bevor das Kopieren:

$ 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

Von man cp:

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

2

Nur Verwendung , unlink theSymLinkwo theSymLinkdie eigentliche Symlink ist, dann versuchen Sie es erneut


3
Dies wird funktionieren, aber beachten Sie, dass dies unlinkden gleichen Effekt hat (und damit keinen Vorteil im Vergleich zu), der häufiger verwendet wird rm. Insbesondere wie rm foo, unlink foowird eine Datei zu löschen , fooauch wenn es sich um eine normale Datei ist und keine symbolische Verbindung. Die Verwendung von unlinkanstelle von rm(oder mv --remove-destination ...) schützt nicht vor versehentlichem Datenverlust.
Eliah Kagan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.