文件系統層次標準(FHS)簡介
當你好奇地看著系統的根目錄(/
)的時候,可能會發現自己有點不知所措。大多數三個字母的目錄名稱並沒有告訴你它們是做什麼的,如果你需要做出一些重要的修改,那就很難知道在哪裡可以查看。
我想給那些沒有深入了解過自己的根目錄的人簡單地介紹下它。
有用的工具
在我們開始之前,這裡有幾個需要熟悉的工具,它們可以讓您隨時挖掘那些您自己找到的有趣的東西。這些程序都不會對您的文件進行任何更改。
最有用的工具是 ls
-- 它列出了使用完整路徑或相對路徑(即從當前目錄開始的路徑)作為參數給出的任何目錄的內容。
$ ls 路徑
當您進一步深入文件系統時,重複輸入長路徑可能會變得很麻煩,所以如果您想簡化這一操作,可以用 cd
替換 ls
來更改當前的工作目錄到該目錄。與 ls
一樣,只需將目錄路徑作為 cd
的參數。
$ cd 路徑
如果您不確定某個文件是什麼文件類型的,可以通過運行 file
並且將文件名作為 file
命令的參數。
$ file 文件名
最後,如果這個文件看起來像是適宜閱讀的,那麼用 less
來看看(不用擔心文件有改變)。與最後一個工具一樣,給出一個文件名作為參數來查看它。
$ less 文件名
完成文件翻閱後,點擊 q
鍵退出,即可返回到您的終端。
根目錄之旅
現在就開始我們的旅程。我將按照字母順序介紹直接放在根目錄下的目錄。這裡並沒有介紹所有的目錄,但到最後,我們會突出其中的亮點。
我們所有要遍歷的目錄的分類及功能都基於 Linux 的文件系統層次標準(FHS)。Linux 基金會維護的 Linux FHS 幫助發行版和程序的設計者和開發人員來規劃他們的工具的各個組件應該存放的位置。
通過將各個程序的所有文件、二進位文件和幫助手冊保存在一致的組織結構中,FHS 讓對它們的學習、調試或修改更加容易。想像一下,如果不是使用 man
命令找到使用指南,那麼你就得對每個程序分別尋找其手冊。
按照字母順序和結構順序,我們從 /bin
開始。該目錄是存放所有核心系統二進位文件的地方,其包含的命令可以在 shell (解釋終端指令的程序)中使用。沒有這個目錄的內容,你的系統就基本沒法使用。
接下來是 /boot
目錄,它存儲了您的計算機啟動所需的所有東西。其中最重要的是引導程序和內核。引導程序是一個通過初始化一些基礎工具,使引導過程得以繼續的程序。在初始化結束時,引導程序會載入內核,內核允許計算機與所有其它硬體和固件進行介面。從這一點看,它可以使整個操作系統工作起來。
/dev
目錄用於存儲類似文件的對象來表示被系統識別為「設備」的各種東西。這裡包括許多顯式的設備,如計算機的硬體組件:鍵盤、屏幕、硬碟驅動器等。
此外,/dev
還包含被系統視為「設備」的數據流的偽文件。一個例子是流入和流出您的終端的數據,可以分為三個「流」。它讀取的信息被稱為「標準輸入」。命令或進程的輸出是「標準輸出」。最後,被分類為調試信息的輔助性輸出指向到「標準錯誤」。終端本身作為文件也可以在這裡找到。
/etc
(發音類似工藝商業網站 「Etsy」,如果你想讓 Linux 老用戶驚艷一下的話,囧),許多程序在這裡存儲它們的配置文件,用於改變它們的設置。一些程序存儲這裡的是默認配置的副本,這些副本將在修改之前複製到另一個位置。其它的程序在這裡存儲配置的唯一副本,並期望用戶可以直接修改。為 root 用戶保留的許多程序常用一種配置模式。
/home
目錄是用戶個人文件所在的位置。對於桌面用戶來說,這是您花費大部分時間的地方。對於每個非特權用戶,這裡都有一個具有相應名稱的目錄。
/lib
是您的系統賴以運行的許多庫的所在地。許多程序都會重複使用一個或多個功能或子程序,它們經常會出現在幾十上百個程序中。所以,如果每個程序在其二進位文件中重複寫它需要的每一個組件,結果會是產生出一些大而無當的程序,作為更好的替代方案,我們可以通過進行「庫調用」來引用這些庫中的一個或多個。
在 /media
目錄中可以訪問像 USB 快閃記憶體驅動器或攝像機這樣的可移動媒體。雖然它並不是所有系統上都有,但在一些專註於直觀的桌面系統中還是比較普遍的,如 Ubuntu。具有存儲能力的媒體在此處被「掛載」,這意味著當設備中的原始位流位於 /dev
目錄下時,用戶通常可以在這裡訪問那些可交互的文件對象。
/proc
目錄是一個動態顯示系統數據的虛擬文件系統。這意味著系統可以即時地創建 /proc
的內容,用包含運行時生成的系統信息(如硬體統計信息)的文件進行填充。
/tmp
正如其名字,用於放置緩存數據等臨時信息。這個目錄不做其他更多的事情。
現代 Linux 系統上大多數程序的二進位文件保存在 /usr
目錄中。為了統一包含二進位文件的各種目錄,/usr
包含 /bin
、/sbin
和 /lib
中的所有內容的副本。
最後,/var
里保存「 可變 」長度的數據。這裡的可變長度數據的類型通常是會累積的數據,就像日誌和緩存一樣。一個例子是你的內核保留的日誌。
為了避免硬碟空間用盡和崩潰的情況,/var
內置了「日誌旋轉」功能,可刪除舊信息,為新信息騰出空間,維持固定的最大大小。
結尾
正如我所說,這裡介紹的絕對不是您在根目錄中可以找到的一切,但是確定系統核心功能所在地是一個很好的開始,而且可以更深入地研究這些功能是什麼。
所以,如果你不知道要學習什麼,就可能有很多的想法。如果你想得到一個更好的想法,就在這些目錄中折騰自己吧!
作者簡介:
自 2017 年以來 Jonathan Terrasi 一直是 ECT 新聞網的專欄作家。他的主要興趣是計算機安全(特別是 Linux 桌面),加密和分析政治和時事。他是全職自由作家和音樂家。他的背景包括在芝加哥委員會發表的保衛人權法案文章中提供技術評論和分析。
via: http://www.linuxinsider.com/story/84658.html
作者:Jonathan Terrasi 譯者:firmianay 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive