zmuś cp do kopiowania na wiszących dowiązaniach symbolicznych


15

Czy jest jakiś sposób, aby zmusić cp(Bash 4.2.5, Ubuntu 12.04) do skopiowania na wiszące dowiązanie symboliczne?

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

cp -f wydaje się w tym przypadku bezsilny i skutkuje tym samym komunikatem.


Próbowałeś cp -fzamiast tego użyć ?
Rohith Madhavan

@RohithMadhavan yep; ta sama wiadomość (właśnie zaktualizowałem pytanie)
Marcus Junius Brutus

Odpowiedzi:


21

Dokonaj cpusunąć plik docelowy przed kopiowaniem:

$ 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

Od man cp:

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

2

Po prostu użyj unlink theSymLinkgdzie theSymLinkjest rzeczywiste dowiązanie symboliczne, a następnie spróbuj ponownie


3
To zadziała, ale należy pamiętać, że unlinkma taki sam efekt jak (a zatem nie ma przewagi w porównaniu do) częściej używanych rm. W szczególności, jak rm foo, unlink foousunie plik, foonawet jeśli jest to zwykły plik, a nie symboliczny link. Używanie unlinkzamiast rm(lub mv --remove-destination ...) nie chroni przed przypadkową utratą danych.
Eliah Kagan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.