
假設我有一個這樣的檔案系統:
/home/me/dir1/dir2/dir3/dir4/dir5/dir6/file1
然後在 中/home/me/dir1
,我建立一個符號連結:
$ cd /home/me/dir1
$ ln -s /home/me/dir1/dir2/dir3/dir4/dir5/dir6 linkdir6
我正在嘗試將file1 複製到我的主目錄(這是我的簡化示例,它比這更複雜- “/home/me/”實際上是一個更複雜的目錄結構,因此“~/”不是解決方案)。
$ cd linkdir6
$ cp file1 ../
$ cd ..
$ ls
dir2 linkdir6
我沒有看到 file1。尋找它,我發現它在/home/me/dir1/dir2/dir3/dir4/dir5/file1
它似乎cp
沒有意識到它位於符號目錄中。
我如何cp
在......之外一個符號資料夾?
或者,我如何cp
理解../
應該取消引用(其中目的地在手冊頁中被引用)?
我錯過了什麼嗎?這可能嗎?
謝謝!
(最後一點 - 實際用例是在一個深層目錄結構中,在一個符號鏈接目錄內,嘗試複製文件 ../another-symlink-directory/ 而不輸入完整路徑 - 這是符號鏈接的要點之一我很關心)
答案1
您實際上已經點擊了cd linkdir6
.您確實位於該目錄中,因此 ../ 是該目錄的上一層,位於 dir5 中。
使用 cp 最安全的方法是位於目標目錄中。然後使用連結獲取原始檔案。
cd ~/me/dir1 #.. Target
cp linkdir6/file1 .
就我個人而言,我更喜歡 cp 中的 -t(目標)選項。
cp -t ~/me/dir1 dir1/linkdir6/file1
答案2
$ cp file1 "$(cd .. && pwd -P)"
看這個答案。