Directory
創建相對於目前目錄的符號連結
我正在嘗試在我的主目錄中創建一個符號連結,該連結指向我的外部硬碟上的一個目錄。
當我這樣指定它時它工作正常:
cd ~ ln -s /run/media/name/exhdd/Data/ Data
但是,當我嘗試這樣做時,它會創建一個錯誤的連結:
cd /run/media/name/exhdd ln -s Data/ ~/Data
這會創建一個我無法
cd
進入的連結。當我嘗試時,bash 抱怨:
bash: cd: Data: Too many levels of symbolic links
當
ls
設置為顯示彩色輸出時,我家中的數據符號連結也顯示為紅色。為什麼會這樣?如何以這種方式創建連結?(我想在我的工作目錄中的另一個目錄中創建一個目錄的符號連結。)
**編輯:**根據這個StackOverflow 答案,如果第二個參數(在我的情況下是 ~/Data)已經存在並且是一個目錄,
ln
將創建一個指向該目錄內目標的符號連結。但是,我遇到了同樣的問題:
ln -s Data/ ~/
這是正在發生的事情。如果您使用相對路徑創建符號連結,則符號連結將是相對的。符號連結只儲存您給它們的路徑。他們從不將路徑解析為完整路徑。跑步
$ pwd /usr/bin $ ln -s ls /usr/bin/ls2
相對於符號連結所在的目錄 ( )創建一個名為
ls2
to (viz. ) 的符號連結。上面的命令將從任何目錄創建一個功能符號連結。/usr/bin``ls``/usr/bin/ls``/usr/bin
$ pwd /home/me $ ln -s ls /usr/bin/ls2
如果您將符號連結移動到不同的目錄,它將不再指向
/usr/bin/ls
.您正在創建一個指向
Data
並命名它的符號連結Data
。它指向自己。您必須使用目錄的絕對路徑創建符號連結。ln -s "$(realpath Data)" ~/Data