Wie ersetze ich einen symbolischen Link durch eine Kopie einer Datei, auf die er verweist?


15

Wenn ein Symlink (einzeln, keine Stapelverarbeitung des Dateisystems erforderlich) vorhanden ist, welche Befehlszeile muss verwendet werden, um ihn durch eine Kopie der Datei zu ersetzen, mit der er verknüpft ist?

Antworten:


16
cp --remove-destination "$(readlink <symlink>)" <symlink>

1
Fehler "-bash: Syntaxfehler in der Nähe des unerwarteten Tokens" newline ", wenn er in einer Debian-Umgebung ausgeführt wird.
Lin Song Yang

Wenn <symlink>es sich um einen Symlink zu einem relativen Pfad handelt, funktioniert dies nur, wenn sich der <symlink>im aktuellen Verzeichnis befindet. Möglicherweise möchten Sie verwenden readlink -f. Oder wenn Sie zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Stéphane Chazelas

0

Du könntest es tun:

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

(das kopiert nur den Inhalt, nicht die Metadaten der Datei wie Berechtigungen und Eigentumsrechte).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.