Заставить cp копировать на висячие символические ссылки

Есть ли способ заставить cp (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 кажется бессильным в этом случае и приводит к тому же сообщению.

2 ответа

Решение

Делать cp удалить целевой файл перед копированием:

$ 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

От man cp:

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

Просто используйте unlink theSymLink где theSymLink это фактическая ссылка, попробуйте еще раз

Другие вопросы по тегам