Filesystems
為什麼隱藏以點開頭的文件名?我可以在不使用點作為第一個字元的情況下隱藏文件嗎?
最初我認為這是一個巧合,但現在我發現它甚至還有一個標籤:所有隱藏的文件名都以點開頭。這是一個約定嗎?為什麼選擇它?可以改變嗎?或者換句話說(作為一個相關問題@evilsoup 建議暗示對一堆其他人的回答):我可以隱藏文件而不重命名它們(使用
.
作為他們名字的第一個字元)?
文件名以 . 應該隱藏是 Unix 早期軟體錯誤的結果。當特殊條目
.
和..
目錄條目被添加到文件系統時,決定 ls 命令不應該顯示它們。但是,該程序被錯誤地編寫為排除任何名稱以.
字元開頭的文件,而不是確切的名稱.
或..
.…所以它從一個錯誤開始,然後作為一個特性被接受(為了記錄,
.
是一個指向目前目錄..
的連結,是一個指向它上面的目錄的連結,但我相信你已經知道了)。由於這種隱藏文件的方法在大多數情況下實際上已經足夠好了,我想沒有人會費心去實現 Windows 風格的文件隱藏。還有一個事實是,實施不同的行為會對 *nix 世界產生更多的碎片,這是任何人最不想要的。
還有另一種隱藏文件的方法不涉及重命名它們,但它僅適用於 GUI 文件管理器(並且在這些管理器中並不通用——主要的 Linux 使用它,但我不認為 OSX 的 Finder 會這樣做,並且更小眾的 Linux 文件管理器不太可能支持這種行為):您可以創建一個名為 的文件
.hidden
,然後將要隱藏的文件名放入其中,每行一個。ls
並且 shell glob 不會尊重這一點,但它仍然可能對你有用。