Linux
如何將相對符號連結路徑更改為“實際”路徑(在遊俠或終端中)
*什麼是實際路徑?*考慮文件系統中的文件夾A和一個符號連結到它的B。****考慮目前在B中的子目錄內的遊俠(或終端)中,例如
/home/B/sub1/sub2
which is in fact/another_but_actual_path/A/sub1/sub2
。我想要的是有一個將相對路徑轉換為實際路徑的工具/命令/腳本。我的意思是在pwd
顯示/home/B/sub1/sub2
時,我想訪問路徑/another_but_actual_path/A/sub1/sub2
。ps 我試過
readlink
了,但它不能給我實際的路徑。ps 我不知道所謂的實際路徑是否有名稱。
標準的 Linux“coreutils”包包含一個命令
realpath
。這將遵循命名路徑的任何和所有符號連結,並返回與其關聯的“真實”路徑。
所以:
$ mkdir -p /tmp/foo/bar $ ln -s /tmp/foo $HOME/foo $ realpath $HOME/foo /tmp/foo $ realpath $HOME/foo/bar /tmp/foo/bar $ realpath $HOME/foo/bar/baz /tmp/foo/bar/baz
我們可以看到連結
$HOME/foo
正在被 的真實路徑替換/tmp/foo
。最後一個條目不必存在,但所有中間點都必須存在。
$ realpath $HOME/foo/bar/baz/qux realpath: '/home/sweh/foo/bar/baz/qux': No such file or directory
那是因為沒有
baz
目錄。