Directory-Structure

為什麼ls顯示.

  • October 2, 2011

看完題目後,當你輸入“ls -a”時,“.”的意義是什麼?和 ”..”?,我有一個類似的。

為什麼要顯示.?我的意思是,是否有任何目錄cd .不起作用?每次看到這條線對使用者有什麼幫助?

ls -a顯示背後的原因...實用程序無關,與 Unix(和 Linux)文件系統有關。

一切都是一個文件。

目錄實際上是包含文件列表的文件。“內部”任何給定目錄,因為那是使用者的視角,如果不完全是文件系統的視角,那麼有兩個特殊文件。

  • 第一個,稱為.,是對目前工作目錄的引用。人們幾乎每天都在使用它,當他們通過./scriptname.
  • 第二個,被稱為..是對 CWDs 父目錄的引用。Like .,..每天都被希望通過cd ...

系統呼叫getdents()是 的系統端的主力,它ls簡單地列舉目錄中的所有文件。(記住:一切都是文件。設備、目錄、套接字等,所以它們都會出現)

從實用性方面來看,該ls命令的作者提供了許多選項和選項組合,允許我們過濾掉某些部分或類型的資訊,例如上面評論的@Gillesls -A將顯示所有dotfile,除了...。所有這些選項都可以被視為後處理選項。它們影響顯示的ls內容,而不是發現的內容ls

確實沒有理由明確列出.and ..,預設情況下,因為我們都知道它們在那裡,它們的用途以及何時使用它們。

但是,當您解決奇怪的權限問題時,能夠有一些選項來查看它們肯定會有所幫助。

查看¹的聯機幫助頁。getdents()它進一步解釋了它的工作原理,並包含一個範常式序的原始碼,您可以使用它進行編譯gcc -Wall,其中列出了目錄中的所有文件。

  1. 至少,Ubuntu 手冊頁getdents()似乎有範常式式碼。

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