Como substituir um link simbólico por uma cópia de um arquivo ao qual ele vincula?

15

Tendo um link simbólico (único, não necessário o processamento do sistema de arquivos em lote), que linha de comando usar para substituí-lo por uma cópia do arquivo ao qual ele vincula?

Ivan
fonte

Respostas:

16
cp --remove-destination "$(readlink <symlink>)" <symlink>
Ignacio Vazquez-Abrams
fonte
1
error "-bash: erro de sintaxe próximo ao token inesperado` newline '"quando executado em um ambiente debian.
Lin Song Yang
Se <symlink>for um link simbólico para um caminho relativo, isso só funcionará se o <symlink>estiver no diretório atual. Você pode querer usar readlink -f. Ou se estiver usando zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Stéphane Chazelas
0

Você poderia fazer:

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

(que copia apenas o conteúdo, não os metadados do arquivo, como permissões e propriedade).

Stéphane Chazelas
fonte