Directory-Structure為什麼
為什麼ls
顯示.
?
看完題目後,當你輸入“ls -a”時,“.”的意義是什麼?和 ”..”?,我有一個類似的。
為什麼要顯示
.
?我的意思是,是否有任何目錄cd .
不起作用?每次看到這條線對使用者有什麼幫助?
ls -a
顯示背後的原因.
與..
實用程序無關,與 Unix(和 Linux)文件系統有關。一切都是一個文件。
目錄實際上是包含文件列表的文件。“內部”任何給定目錄,因為那是使用者的視角,如果不完全是文件系統的視角,那麼有兩個特殊文件。
- 第一個,稱為
.
,是對目前工作目錄的引用。人們幾乎每天都在使用它,當他們通過./scriptname
.- 第二個,被稱為
..
是對 CWDs 父目錄的引用。Like.
,..
每天都被希望通過cd ..
.系統呼叫
getdents()
是 的系統端的主力,它ls
簡單地列舉目錄中的所有文件。(記住:一切都是文件。設備、目錄、套接字等,所以它們都會出現)從實用性方面來看,該
ls
命令的作者提供了許多選項和選項組合,允許我們過濾掉某些部分或類型的資訊,例如上面評論的@Gillesls -A
將顯示所有dotfile,除了.
和..
。所有這些選項都可以被視為後處理選項。它們影響顯示的ls
內容,而不是發現的內容ls
。確實沒有理由明確列出
.
and..
,預設情況下,因為我們都知道它們在那裡,它們的用途以及何時使用它們。但是,當您解決奇怪的權限問題時,能夠有一些選項來查看它們肯定會有所幫助。
查看¹的聯機幫助頁。
getdents()
它進一步解釋了它的工作原理,並包含一個範常式序的原始碼,您可以使用它進行編譯gcc -Wall
,其中列出了目錄中的所有文件。—
- 至少,Ubuntu 手冊頁
getdents()
似乎有範常式式碼。