Readlink
解釋 readlink 命令的選項
readlink
有人可以用簡單的語言向我解釋以下命令選項:-f, --canonicalize canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist -e, --canonicalize-existing canonicalize by following every symlink in every component of the given name recursively, all components must exist -m, --canonicalize-missing canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence
我認為這是不言自明的,所以我真的不知道對你來說聽起來模棱兩可的部分……讓我們看一個例子:
–規範化
$ mkdir /tmp/realdir $ mkdir /tmp/subdir $ ln -s /tmp/realdir /tmp/subdir/link $ cd /tmp $ readlink -f ./subdir/link/nonexistentdir/ /tmp/realdir/nonexistentdir $ readlink -f ./subdir/link/nonexistentfile.txt /tmp/realdir/nonexistentfile.txt
無論選項是什麼,都
readlink
將: - 將相對路徑轉換為絕對路徑 - 將符號連結名稱轉換為真實路徑正如您在上面看到的,使用
-f
,readlink
並不關心這條路徑的最後一部分(此處nonexistentfile.txt
)是否存在。如果此路徑的另一部分不存在,
readlink
則不會輸出任何內容,並且返回程式碼不同於 0(這意味著發生了錯誤)。看:$ readlink -f /tmp/fakedir/foo.txt $ echo $? 1
–canonicalize-existing
如果您嘗試相同的操作
-e
:$ readlink -e ./subdir/link /tmp/realdir $ readlink -e ./subdir/link/nonexistentfile.txt $ echo $? 1
使用
-e
,如果任何路徑組件不存在,readlink
將不輸出任何內容,並且返回程式碼不同於 0。–canonicalize-缺失
-m
選項是相反的-e
。不會進行任何測試來檢查 path 的組件是否存在:$ readlink -m ./subdir/link/fakedir/fakefile /tmp/realdir/fakedir/fakefile $ ln -s /nonexistent /tmp/subdir/brokenlink $ readlink -m ./subdir/brokenlink/foobar /nonexistent/foobar