Command-Line

使用帶有符號連結的 ls 命令

  • February 18, 2018

我目前不明白在使用該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取決於許多選項,而不僅僅是-land -H。在沒有符號連結行為選項 ( -L, -H) 的情況下,ls symlinkToDir顯示目錄的內容,但是ls -l symlinkToDir,ls -d symlinkToDirls -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 應寫入文件名包含在目錄中以及任何請求的相關資訊。

引用自:https://unix.stackexchange.com/questions/425029