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