Wie ersetze ich einen Symlink durch die eigentliche Datei?

1

Ich möchte den Symlink entfernen und stattdessen die Datei einfügen, auf die er verweist, wenn möglich mit einem einzigen Befehl, damit ich ihn als "Externes Tool" in phpStorm haben kann.

OZZIE
quelle

Antworten:

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

Quelle: https://unix.stackexchange.com/a/35027

grg
quelle
Danke, ich habe es versucht und es hat nicht funktioniert, aber es stellte sich heraus, dass die Links kopiert wurden und nicht mehr auf die richtige Stelle zeigten. Aber ich war verwirrt und dachte, es sei etwas mit Bash
OZZIE
Wie bekomme ich das für alle Symlinks in einem Verzeichnis zum Laufen? Finden Sie Beschwerden, illegal option -twenn ich es in eine Schleife stecke.
cjm
@cjm Das sollte mit find gut funktionieren. Vermissen Sie den Pfad als Argument zu finden? Was ist Ihr genauer Suchbefehl?
grg
@grgarside Ich habe den Pfad als mein Suchargument verpasst. Jetzt ist mein Problem, dass cp nervös wird, illegal option -- -anstatt es --remove-destinationals gültige Option zu erkennen. Befehl ist for f in (find . -type l); cp --remove-destination "(readlink $f)" $f;end;; Schale ist Fisch. Es wird über die illegale Option geklagt, ob das angegeben (readlink $f)ist oder nicht.
cjm
@cjm Es fehlt ein '$' vor der offenen Klammer vor dem Readlink (sollte sein "$(readlink). Auch warum benutzt du die Shell, um die Schleife zu machen? find . -type l -exec cp --remove-destination "$(readlink {})" {} \;
grg