Comment remplacer un lien symbolique par une copie d'un fichier auquel il est lié?

15

Ayant un lien symbolique (un seul, aucun traitement de système de fichiers par lots nécessaire), quelle ligne de commande utiliser pour le remplacer par une copie du fichier auquel il est lié?

Ivan
la source

Réponses:

16
cp --remove-destination "$(readlink <symlink>)" <symlink>
Ignacio Vazquez-Abrams
la source
1
erreur "-bash: erreur de syntaxe près du jeton inattendu" newline "" lorsqu'il est exécuté à partir d'un environnement debian.
Lin Song Yang
Si <symlink>est un lien symbolique vers un chemin relatif, cela ne fonctionne que si le <symlink>est dans le répertoire courant. Vous voudrez peut-être utiliser readlink -f. Ou si vous utilisez zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Stéphane Chazelas
0

Vous pourriez faire:

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

(qui copie uniquement le contenu, pas les métadonnées du fichier comme les autorisations et la propriété).

Stéphane Chazelas
la source