Shell
有沒有辦法以程式方式壓縮 ../.. 路徑的一部分?
例如,我在腳本中有這些類型的文件路徑:
/path/to/some/file/../../file1.txt
有沒有我可以呼叫的命令,例如可以
readlink
將此路徑轉換為其實際物理形式:/path/to/file1.txt
啊,問得太快了。在 Linux 上,答案是
readlink
與-m
交換機一起使用:$ readlink -m /home/saml/web/../web_login_form_examples/basic-php-parsing.zip /home/saml/web_login_form_examples/basic-php-parsing.zip
閱讀連結手冊頁
-m, --canonicalize-missing canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence
如果您對符號連結不感興趣
file.txt
,並且假設該文件存在:filename=/path/to/file1.txt canonical_directory=$(cd -- "$(dirname -- "$filename")/" && pwd -P) echo "$canonical_directory/${filename##*/}"
這是完全可移植的(一些 pre-POSIX 古董除外)。