Как заменить символическую ссылку на копию файла, на который она ссылается?

15

Имея символьную ссылку (единую, не требующую пакетной обработки файловой системы), какую командную строку использовать, чтобы заменить ее копией файла, на который она ссылается?

Иван
источник

Ответы:

16
cp --remove-destination "$(readlink <symlink>)" <symlink>
Игнасио Васкес-Абрамс
источник
1
ошибка "-bash: синтаксическая ошибка рядом с неожиданным токеном" новая строка "" при выполнении из среды Debian.
Лин Сонг Ян,
Если <symlink>это символическая ссылка на относительный путь, это работает, только если <symlink>находится в текущем каталоге. Вы можете использовать readlink -f. Или если использовать zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Стефан
0

Вы могли бы сделать:

file=path/to/symlink
{ rm -f -- "$file" && cat > "$file"; } < "$file"

(это копирует только содержимое, а не метаданные файла, такие как права доступа и права собственности).

Стефан Шазелас
источник