%20.png)
Angenommen, ich habe ein Dateisystem wie dieses:
/home/me/dir1/dir2/dir3/dir4/dir5/dir6/file1
Dann /home/me/dir1
erstelle 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 cp
hätte es nicht bemerkt, dass es sich in einem symbolischen Verzeichnis befand.
Wie mache ichcp
ausein symbolischer Ordner?
Oder wie mache ich cp
klar, 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.