Command-Line

ls -d 是什麼意思?

  • April 6, 2022

我進入 的手冊頁ls,該-d選項的條目如下:

-d, –directory 列出目錄條目而不是內容,並且不取消引用符號連結

所以,我認為 ls -d 將顯示給定目錄中的所有目錄。但是我進入了一個目錄並嘗試了兩個不同的命令:

  1. 獲取目錄:ls -l | grep ^d

這個有效,所有 7 個目錄都被顯示 2. 獲取目錄 withls -d 這個不顯示7個目錄,只顯示一個點.

我不明白我是否錯誤地使用了該選項,或者我誤解了它的含義,該-d選項的實際含義和用法是什麼?

ls -d顯示有​​關目錄或符號連結的資訊 - 此資訊(簡單來說)是其各自的路徑。合乎邏輯的假設是d代表directory,因為我遇到的 UNIX 術語中最基本的定義是“列出目錄”。

從表面上看,這似乎沒有那麼有用。假設您目前位於具有 2 個子目錄的目錄中:

documents music

如您在上面正確說明的那樣,不使用ls documents任何選項將為您提供*文件內容的列表。*使用ls -d documents只會列印名稱 - 因為該文件夾的路徑,相對於您目前所在的位置 - 與其名稱相同 -文件!這可以擴展(儘管在它的基本用法中有些多餘)ls -d $PWD/*,它將顯示所有文件和文件夾,但帶有它們的工作目錄(因此 PWD - 以前的工作目錄)。

與 * 運算符結合使用時,它確實有一個有用的功能 -ls -d */將僅顯示目前工作目錄中的目錄。

將焦點轉向定義的符號連結部分,如果您要使用ls -d ~- 波浪號擴展 - 它將列印目前 HOME 目錄的路徑。這可以用於不同的應用程序(取決於作業系統)並且確實有一些實際用途;您可以將您的語句進一步修改為ls -d ~your-usernamels -d ~another-username或者ls -d ~root為這些使用者提供 HOME 路徑。另一個例子可以在 apache 伺服器環境中看到,這裡使用使用者名類似地顯示到其託管空間的路徑(相對而言,它們的 HOME 目錄)。

有多種功能可以與此結合使用,但以上涵蓋了操作符背後的核心功能——簡而言之,-d是一個專門顯示目錄/路徑資訊的操作符。如果您想進一步調查,有一個很好的程式碼生成器可以使用 ls 函式(包括一些 -d 功能):ls 程式碼生成器

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