Wie kopiere ich Dateien über/außerhalb symbolischer Links? (Ziel)

Wie kopiere ich Dateien über/außerhalb symbolischer Links? (Ziel)

Angenommen, ich habe ein Dateisystem wie dieses:

/home/me/dir1/dir2/dir3/dir4/dir5/dir6/file1

Dann /home/me/dir1erstelle ich einen symbolischen Link:

$ cd /home/me/dir1
$ ln -s /home/me/dir1/dir2/dir3/dir4/dir5/dir6 linkdir6

Ich versuche, Datei1 in mein Home-Verzeichnis zu kopieren (das ist mein vereinfachtes Beispiel, es ist komplizierter als das hier – „/home/me/“ ist eigentlich eine viel kompliziertere Verzeichnisstruktur, also ist „~/“ keine Lösung).

$ cd linkdir6
$ cp file1 ../
$ cd ..
$ ls
dir2 linkdir6

Ich sehe Datei1 nicht. Ich suche danach und finde sie in/home/me/dir1/dir2/dir3/dir4/dir5/file1

Es schien, als cphätte es nicht bemerkt, dass es sich in einem symbolischen Verzeichnis befand.

Wie mache ichcp ausein symbolischer Ordner?

Oder wie mache ich cpklar, dass ../dereferenziert werden soll (woZielin der Manpage wird respektiert)?

Übersehe ich etwas? Ist das überhaupt möglich?

Danke!

(letzte Anmerkung – der eigentliche Anwendungsfall liegt in einer tiefen Verzeichnisstruktur, in einem Symlink-Verzeichnis, wo versucht wird, eine Datei ../ein anderes Symlink-Verzeichnis/ zu kopieren, ohne vollständige Pfade einzugeben – das ist meiner Ansicht nach einer der Punkte bei symbolischen Links)

Antwort1

Du bist tatsächlich dem Link mit gefolgt cd linkdir6. Du bist wirklich in diesem Verzeichnis, also liegt ../ eine Ebene höher, in dir5.

Am sichersten ist es, sich mit cp im Zielverzeichnis zu befinden. Verwenden Sie dann den Link, um zur Quelldatei zu gelangen.

cd ~/me/dir1  #.. Target
cp linkdir6/file1 .

Persönlich bevorzuge ich die Option -t (Ziel) in cp.

cp -t ~/me/dir1 dir1/linkdir6/file1

Antwort2

$ cp file1 "$(cd .. && pwd -P)"

Sehendiese Antwort.

verwandte Informationen