Linux

如何將相對符號連結路徑更改為“實際”路徑(在遊俠或終端中)

  • November 27, 2018

*什麼是實際路徑?*考慮文件系統中的文件夾A和一個符號連結到它的B。****考慮目前在B中的子目錄內的遊俠(或終端)中,例如/home/B/sub1/sub2which 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目錄。

引用自:https://unix.stackexchange.com/questions/483346