使用帶有符號連結的 ls 命令
我目前不明白在使用該
ls
命令時嘗試查找指向目錄的符號連結的內容或資訊時發生了什麼。-H
我知道該命令有一個選項ls
將遵循命令行上列出的符號連結。手冊頁沒有說明只有在使用該選項ls
時才需要這樣做。-l
如果我只是做類似的事情*,它將*ls symLinkToDir
列出連結目錄的內容而沒有其他選項。但如果我這樣做,它只會顯示有關連結的資訊,除非我也包含該選項。這個例子就是我所說的:ls -l symLinkToDir``-H
brian@LinuxBox:~$ ls playground/linkedDir file4 file5 brian@LinuxBox:~$ ls -l playground/linkedDir lrwxrwxrwx 1 brian brian 4 Feb 18 16:42 playground/linkedDir -> dir2 brian@LinuxBox:~$ ls -lH playground/linkedDir total 0 -rw-rw-r-- 1 brian brian 0 Feb 18 16:41 file4 -rw-rw-r-- 1 brian brian 0 Feb 18 16:41 file5
我不明白這裡的東西嗎?這只是一種奇怪的工作方式嗎?如果這確實是它的工作原理,那麼手冊頁是否應該說在某些條件下將遵循符號連結而不需要該
-H
選項?提前感謝您的意見。
on 指向目錄的符號連結的行為
ls
取決於許多選項,而不僅僅是-l
and-H
。在沒有符號連結行為選項 (-L
,-H
) 的情況下,ls symlinkToDir
顯示目錄的內容,但是ls -l symlinkToDir
,ls -d symlinkToDir
和ls -F symlinkToDir
所有顯示有關符號連結的資訊。如果您正在閱讀 GNU 實現的手冊頁
ls
,它並沒有給出完整的故事。GNU 手冊頁只是摘要。完整的文件在 Info 手冊 (info ls
) 中,現在通常以 HTML 形式提供。我也無法在 Info 手冊中找到指向目錄的符號連結的預設行為,但這可能是文件中的錯誤。例如,FreeBSD 手冊頁更準確,但您必須閱讀該
-H
選項的描述才能找到預設行為。
-H
遵循命令行上的符號連結。-F
如果未指定、-d
或選項,則假定使用此選項-l
。如果您想要更正式的描述(但不太容易閱讀),請閱讀POSIX 規範。這不會有您的實施的擴展。
如果指定了 -d、-F 或 -l 選項中的一個或多個,並且既沒有指定 -H 也沒有指定 -L 選項,則對於每個將文件命名為指向目錄的符號連結類型的操作數,ls 應寫入文件的名稱以及任何請求的相關資訊。如果未指定 -d、-F 或 -l 選項,或者未指定 -H 或 -L 選項,則對於每個操作數命名為指向目錄的符號連結類型的文件,ls 應寫入文件名包含在目錄中以及任何請求的相關資訊。