Jak zastąpić dowiązanie symboliczne kopią pliku, do którego prowadzi łącze?


15

Posiadając dowiązanie symboliczne (pojedyncze, bez przetwarzania wsadowego systemu plików), jaki wiersz poleceń należy zastosować, aby zastąpić go kopią pliku, do którego prowadzi łącze?

Odpowiedzi:


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

1
error "-bash: błąd składni w pobliżu nieoczekiwanego tokena` newline '", gdy jest wykonywany ze środowiska Debiana.
Lin Song Yang,

Jeśli <symlink>jest dowiązaniem symbolicznym do ścieżki względnej, działa to tylko wtedy, gdy <symlink>znajduje się w bieżącym katalogu. Możesz użyć readlink -f. Lub jeśli używasz zsh:cp --remove-destination path/to/symlink(:A) path/to/symlink
Stéphane Chazelas

0

Mógłbyś:

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

(który kopiuje tylko treść, a nie metadane pliku, takie jak uprawnienia i własność).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.