realpath — 解析符號連結,顯示真實絕對路徑

解析符號連結,輸出真實的正規化絕對路徑。

語法

realpath [選項] 路徑...

常用選項

選項 說明 範例
-e, --canonicalize-existing 路徑必須存在,否則報錯 realpath -e /path
-m, --canonicalize-missing 路徑不存在也不報錯 realpath -m /nonexist/path
--relative-to=目錄 輸出相對於指定目錄的相對路徑 realpath --relative-to=/etc file
--relative-base=目錄 若路徑在目錄內則輸出相對路徑 realpath --relative-base=/home /home/user/file

使用範例

範例 1:取得腳本本身的目錄路徑

腳本中常見用法:取得腳本所在目錄,無論從哪裡呼叫都正確。

$ SCRIPT_DIR=$(dirname "$(realpath "$0")")
範例 2:解析符號連結路徑

當 /usr/bin/python3 是符號連結時,取得最終的真實路徑。

$ realpath /usr/bin/python3
/usr/bin/python3.11
範例 3:正規化含有 .. 的路徑

清理包含相對元件的路徑,輸出標準絕對路徑。

$ realpath /var/log/../lib/apt
/var/lib/apt

常見錯誤與排錯

realpath: /path: No such file or directory
原因
預設要求路徑存在,若路徑不存在則報錯。
解法
加上 -m 選項允許路徑不存在:realpath -m /nonexistent/path

延伸閱讀