Linux 和Windows的文件系統有些不一樣,在學習使用 Linux 以前,若可以瞭解這些不一樣,會有助於後續學習。linux
本文先對Windows和 Linux 上面文件系統原理、組織概念進行區分,並給出例子、列舉二者的優缺點以具體說明,最後較爲詳細地介紹了 Linux 系統的目錄結構。數據庫
下面將介紹啓動Windows和 Linux 後,在文件系統的角度上,它們分別是怎樣看待本身世界的。vim
在Windows系統中, 一切東西都是存放在硬盤上的。啓動系統後,先肯定硬盤,再肯定硬盤上的分區以及每一個分區所對應文件系統,最後是存放在某個分區特定的文件系統中的文件。 也就是說,Windows是經過 「某個硬盤-硬盤上的某個分區-分區上的特定文件系統-特定文件系統中的文件」 這樣的順序來訪問到一個文件的。緩存
可是與Windows不一樣, Linux 系統中的一切都是存放在惟一的 虛擬文件系統中的,這個 虛擬文件系統是樹狀的結構以一個根目錄開始。啓動系統後,先有這個 虛擬文件系統,再識別出各個硬盤, 再把某個硬盤的某個分區掛載到這個 虛擬文件系統的某個子樹上(即分區用某個子目錄來表示),再肯定分區對應的子目錄文件系統,最後的文件就存放在這個特定的文件系統中。 也就是說, Linux 系統是經過 「虛擬文件系統-硬盤-硬盤上的分區-分區上的特定文件系統-特定文件系統中的文件」 這樣的順序來訪問一個文件的。網絡
可能對習慣了使用Windows的用戶來講, Linux 的方式有些不適應,它的 虛擬文件系統,實質就是一顆目錄樹,最開始的目錄叫作根目錄,根目錄中又有每一級子目錄,或者文件,子目錄又有子子目錄和文件,其中每一個子目錄都特定的功能這個功能(這些是約定俗成了的,在後面 經常使用的重要目錄 (See section 1.2.1) 中會詳細說明)。函數
也許有人會問,沒有這個虛擬文件系統就沒法使用硬盤,但是最開始沒有硬盤,那麼這個 虛擬文件系統以及相應的組織結構是怎麼存放起來的呢?這個問題,就像先有雞仍是先有蛋這個問題同樣看似簡單實則……可是,在 Linux 中,很輕易地跳出了這個思惟循環,問題的答案並沒在 虛擬文件系統 和 硬盤 這二者之間徘徊,而是第三者—— 內存 ,Linux系統啓動起來以後,整個 虛擬文件系統的組織結構,都是隨着每次內核系統的啓動自動在內存中創建好了的,根本就不須要硬盤。工具
另外還要注意,就是在咱們用戶的角度上,不管在Windows仍是 Linux 上面,都是使用路徑來訪問一個文件的。表示文件的路徑由 「文件所在的目錄+各級目錄的分隔符+文件」 三個部分組成,這個策略在二者之間是同樣的,所不一樣的是,Windows下面目錄分隔符是 \ , Linux 下面是 / ,也許這也是二者之間爲了表示其各自立場不一樣的一個緣由吧?^_^性能
在Windows系統中,咱們能夠把文件大致分爲兩種: 系統文件和用戶文件 。通常來講系統文件(例如Windows操做系統自己,一些系統程序,程序運行所需的庫文件,以及一些系統配置文件等)存放的默認位置在 C 盤,固然也能夠在安裝時候指定在其餘盤;其它用戶文件,包含用戶後來安裝的程序以及一些數據文件等,用戶能夠把它們隨意存放在任意的分區。學習
在 Linux 系統中,主要有兩個概念: 虛擬文件系統中的文件和 Linux操做系統內核 自己。邏輯上能夠認爲前者屬於上層,後者在下層,前者基於後者,後者依賴前者而存在。 Linux 把除了它自己( Linux操做系統內核 )之外的一切事物都看做是在 虛擬文件系統中的文件了。不管是鍵盤,鼠標,數據,程序,CPU,內存,網卡……不管是硬件、軟件、數據仍是內存中的東西,咱們均可以在 虛擬文件系統中的相應子目錄對他們進行訪問和操做,操做統一。而實現這些管理的幕後就是 Linux操做系統內核 自己:啓動 Linux 系統的時候,首先電腦把 Linux操做系統內核 加載到內存中,內核自己提供了文件管理,設備管理,內存管理,CPU進程調度管理,網絡管理等功能,等內核運行起來以後,就在內存中創建起相應的 虛擬文件系統,最後就是內核利用它提供的那些功能,經過管理文件的方式,來管理 虛擬文件系統中的硬件軟件等各類資源了。ui
Linux 把提供操做系統自己功能(管理計算機軟硬件資源)的那些部分劃給了 Linux操做系統內核 ,使得Linux操做系統內核 成爲一個獨立的部分,有它本身獨立的開源代碼;而其它的一切(軟件應用,硬件驅動,數據)都根據其特性有本身的開源代碼、或者自由地組織而且存放在那個 虛擬文件系統中由 Linux操做系統內核 來管理。這樣,將系統自己和系統所管理的資源分開,並開放源代碼,有助於對系統或者系統所管理的資源進行靈活的定製和擴展,還能按需快速創建起只適合本身使用的操做系統,也利於操做系統自己的發展。實際 Ubuntu , Fedora , RedHat 等各類不一樣的 Linux 操做系統發行版,簡單來講就是不一樣廠商對其文件系統和內核進行了不一樣的配置而產生的 「大衆化」 的操做系統。相比之下,Windows就顯得很是地零亂複雜,將系統、軟件、硬件、數據都混在了一塊兒,其不一樣版本只能由Microsoft 一家公司發行。
下面用直觀的例子,來講明二者的不一樣,以加深理解。假設咱們的機器上面有一個硬盤,硬盤分爲三個區。
在Windows系統中, 咱們啓動系統以後就會看到 C, D, E, 盤符,它們分別對應硬盤上的三個分區,增長硬盤,或者分區,會致使盤符的增長(注意因爲歷史緣由, A, B 用於表示軟驅,硬盤分區盤符從 C 開始按字母遞增),這裏的每一個分區都各自能夠被格式化爲不一樣的文件系統(這裏的文件系統,包括例如 NTFS 格式, FAT32 格式等),文件系統的基本功能就是爲了存放文件的,不一樣文件系統區別通常在於管理其中存放的文件的功能的強弱,因此分區被格式化成指定格式的文件系統以後,就能夠存聽任何文件和目錄了,咱們看到的 C, D, E 內容也就對應了硬盤中相應分區的數據內容。
可是,與Windows中把硬盤分區當作 C, D, E 盤符不一樣, Linux 中最開始根本就沒有硬盤的概念,就只有一個純粹的 虛擬文件系統。若是想要使用哪一個硬盤的某個分區,就把那個分區 「掛載」 到某個子目錄之下,這樣硬盤中的分區,文件系統,目錄等內容就呈現到了那個子目錄裏面。也就是說,在 Linux 中,咱們使用硬盤中的數據,實際是先把硬盤的某個分區 「掛載」 到某個子目錄下,而後經過那個子目錄來訪問的。這個例子中, 一般硬盤會對應 虛擬文件系統中的/dev/sda (若有多個硬盤,則爲 /dev/sda, /dev/sdb, ……, 按字母遞增), 其三個分區對應 /dev/sda1, /dev/sda2,/dev/sda3 (多個分區按數字遞增,不一樣硬盤的分區,對應爲 /dev/sdb1, /dev/sdb2 等等), 默認硬盤各個分區會被掛載到 虛擬文件系統系統中相似 /mnt/sda1/, /mnt/sda2/, /mnt/sda3/ 的目錄(在 Linux 又叫掛載點)中,在/etc/fstab 文件中,咱們能夠找到分區文件和掛載點的對應關係描述。這樣,硬盤相應的分區就作爲整個 虛擬文件系統根目錄下的一顆子樹,反映到了子目錄(掛載點)上,子目錄中的內容就對應分區中的數據。
假設訪問上述硬盤第三個分區 dir1 目錄中的文件 test.file
Window系統上的路徑:E:\dir1\test.file Linux系統上的路徑:/mnt/sda3/dir1/test.file
再有,假設用戶安裝和卸載一個程序 firefox :
Windows系統中
指定或不指定安裝路徑相似,程序的安裝目錄會在 C:\Program Files\Firefox 相似的目錄中,或指定的安裝路徑中; 可執行文件通常在程序的安裝路徑;依賴的內部庫、第三方庫、和系統庫可能在安裝路徑中,也可能在C:\Windows\System32, 或 C:\Windows\system 等相似的路徑;而程序訪問期間的系統和用戶配置文件和產生的輸入輸出文件,可能會在安裝路徑配置中,或者在 C:\Windows\ 下的某些文件中(好比註冊表數據庫文件、用戶目錄等),這就不必定了。並且不一樣的系統版本,應用程序版本下,這些目錄的具體名稱和路徑可能會有所不一樣。卸載的時候因爲不肯定哪些地方安裝了什麼內容,很容易形成文件刪除補全,遺留系統垃圾等現象,形成系統愈來愈癱腫。
Linux 系統中
若是不指定安裝路徑,全部程序的可執行文件在 /usr/bin 中, 全局配置文件在 /etc/firefox 相似的目錄, 用戶配置文件通常在用戶主目錄的 .firefox 的路徑下(用戶主目錄路徑名稱統一格式爲 /home/<username>) ,依賴的內部庫和第三方庫在 /usr/lib, 系統庫在 /lib 下, 數據文件通常就在用戶主目錄下。 若是指定安裝目錄,那麼全部內部庫和可執行程序,全局配置文件,會在 <安裝路徑> 下的 bin, lib, etc 子目錄下,其它文件通常和默認狀況相同。卸載程序之時,只需在對應目錄中,將可執行文件、內部庫、配置文件、數據文件刪除便可,基本沒有不肯定是否遺留垃圾文件的問題。這些都是大多數應用程序安裝的和訪問的默認策略,就像是不成文的業界標準,不排除有個別程序不安裝這種策略部署應用,可是 Linux 用戶帶來 「麻煩「 的應用,遲早也會被淘汰,不可能會流行在 Linux 系統中,這樣,天然的,好的應用都保存在 Linux 系統中並逐漸流行起來,還不會破壞系統結構。
可見, Linux 文件的存放和組織明顯方式更高效,層次更分明。
基於上述內容,Windows和 Linux 文件系統的各有優缺點分別以下。
Windows系統優勢
優勢主要是用戶存放東西的位置比較自由,系統結構簡單便於新用戶上手。
Windows系統缺點
缺點��多主要有:
目錄組織缺少標準
因爲對「系統文件」和「用戶文件」存放位置缺少細緻的規定,數據組織的方式顯得比較凌亂,而且兩種文件之間很容易相互干擾(例如數據文件可能存放在系統區域給系統帶來垃圾文件等)。
用戶的使用經驗對系統的使用效率影響很大
通常來講,咱們使用Windows時候合理使用分區會提高的系統效率。例如根據須要設置合理的系統分區(假設爲C 分區),儘可能少往 C 盤存放數據文件,根據具體狀況能夠將一些 「重要而且經常使用的」 程序安裝在 C 分區,隨時保持系統目錄的清潔和大小助於提高系統的運行速度,用戶安裝的通常軟件儘可能不要安裝在 C 盤,安裝軟件時候指定的位置最好採用默認標準目錄名稱(例如 X:\Program Files 目錄,這裏 X 表示盤符而不要本身定義一些奇怪名字的目錄,這樣便於軟件的維護等等。
共享不便
Windows上有經驗的用戶們會將本身的目錄結構組織好,可是每一個用戶組織本身內容的方式是不同的,因此他的機器上哪裏存放了什麼內容,別人很難知道,爲共享帶來了麻煩。
Linux 系統缺點
最開始 虛擬文件系統中的每一個子目錄的功能是事先規定好了的,咱們須要事先知道那些目錄存放哪些文件,而後在相應的位置中建立本身的內容,這也是 Linux 系統入門門檻高的一個緣由。固然,最開始的新手,也徹底能夠無視這一點,能夠像Windows那樣隨意地建立目錄和文件(儘管不推薦這麼作)。
實際上最開始的目錄也很少,主要就那麼幾個,花不了多長時間就會明白它們的做用的,而明白這些做用以後帶來的好處,遠不止付出那麼多(本文後面 經常使用的重要目錄 (See section 1.2.1) 會着重對此進行介紹)。
Linux 系統優勢
這裏只說幾個優勢:
目錄結構反映系統運行機理
當咱們瞭解了這些目錄的功能以後,咱們對整個 Linux 操做系統的運行機理也會有一個大體的瞭解。
結構清晰避免邏輯混亂
這樣的目錄結構,有助於咱們以一種高效的方式組織本身的數據,分類清晰而且不會對系統運行有任何影響,規定了最開始每一個目錄的功能,並無限制咱們的自由,由於咱們知道咱們能夠在哪裏建立本身的子目錄而且在子目錄中任意建立本身的文件。
組織規範便於共享
因爲目錄具備統一的組織結構,因此 Linux 上面的用戶在共享數據的時候,可以很容易地猜想出他所須要的數據大體存放在什麼位置,同時也不會影響到私有數據的保密性,畢竟具體來講,怎麼存放本身的私有數據,那是用戶本身決定的。
實質上,咱們啓動系統所看到的 「根目錄」 ,邏輯上是 Linux 虛擬文件系統的根目錄中的一個子目錄,咱們看不到除了這個 「根目錄」 之外的其餘的目錄,那些目錄和操做系統的具體實現相關是被操做系統內核隱藏起來了的,因此這裏就介紹咱們所能看到的文件系統中的 「根目錄」 的各個子目錄中的做用吧。
在 Linux 文件系統中的每個子目錄都有特定的目的和用途。通常都是根據 FHS 標準定義一個正式的文件系統結構的,這個標準規定了哪些目錄應該哪些做用。這裏咱們先介紹一些平常常常用到的目錄,而後給出 FHS 相關的內容。
這裏,根據本人的使用經驗,給出比較常見重要的一些目錄,最開始咱們對它們有所瞭解就能夠了。隨着對 Linux 使用的經驗的加深,咱們會了解愈來愈多的目錄。對目錄的功能知道得越多,咱們對 Linux 系統的工p做原理就理解的越深入,理解操做系統的工做原理,更助於咱們更爲規範地使用和理解系統中每一個目錄存在的意義,直至最後幾乎知道系統中的每一個文件……
/ 根目錄
包含了幾乎所的文件目錄。至關於中央系統。進入的最簡單方法是:cd /。
/boot 引導程序,內核等存放的目錄
這個目錄,包括了在引導過程當中所必需的文件,引導程序的相關文件(例如 grub , lilo 以及相應的配置文件)以及 Linux 操做系統內核相關文件(例如 vmlinuz 等)通常都存放在這裏。在最開始的啓動階段,經過引導程序將內核加載到內存,完成內核的啓動(這個時候, 虛擬文件系統還不存在,加載的內核雖然是從硬盤讀取的,可是沒通過 Linux 的 虛擬文件系統,這是比較底層的東西來實現的)。而後內核本身建立好 虛擬文件系統,而且從 虛擬文件系統的其餘子目錄中(例如 /sbin 和 /etc )加載須要在開機啓動的其餘程序或者服務或者特定的動做(部分能夠由用戶本身在相應的目錄中修改相應的文件來配製)。若是咱們的機器中包含多個操做系統,那麼能夠經過修改這個目錄中的某個配置文件(例如 grub.conf )來調整啓動的默認操做系統,系統啓動的擇菜單,以及啓動延遲等參數。
/sbin 超級用戶可使用的命令的存放目錄
存放大多涉及系統管理的命令(例如引導系統的 init 程序),是超級權限用戶 root 的可執行命令存放地,普通用戶無權限執行這個目錄下的命令(可是有時普通用戶也可能會用到)。這個目錄和 /usr/sbin ,/usr/X11R6/sbin或/usr/local/sbin 等目錄是類似的,咱們要記住,凡是目錄 sbin 中包含的都是 root 權限才能執行的,這樣就好了。後面會具體區分。
/bin 普通用戶可使用的命令的存放目錄
系統所須要的那些命令位於此目錄,好比 ls 、 cp 、 mkdir 等命令;相似的目錄還 /usr/bin , /usr/local/bin等等。這個目錄中的文件都是可執行的、普通用戶均可以使用的命令。做爲基礎系統所須要的最基礎的命令就是放在這裏。
/lib 根目錄下的所程序的共享庫目錄
此目錄下包含系統引導和在根用戶執行命令時候所必需用到的共享庫。作個不太好可是比較形象的比喻,點相似於Windows上面的 system32 目錄。按理說,這裏存放的文件應該是 /bin 目錄下程序所須要的庫文件的存放地,也不排除一些例外的狀況。相似的目錄還 /usr/lib , /usr/local/lib 等等。
/dev 設備文件目錄
在 Linux 中設備都是以文件形式出現,這裏的設備能夠是硬盤,鍵盤,鼠標,網卡,終端,等設備,經過訪問這些文件能夠訪問到相應的設備。設備文件可使用 mknod 命令來建立,具體參見相應的命令;而爲了將對這些設備文件的訪問轉化爲對設備的訪問,須要向相應的設備提供設備驅動模塊(通常將設備驅動編譯以後,生成的結果是一個*.ko 類型的二進制文件),在內核啓動以後,再經過 insmod 等命令加載相應的設備驅動以後,咱們就能夠經過設備文件來訪問設備了。通常來講,想要 Linux 系統支持某個設備,只須要三個東西:相應的硬件設備,支持硬件的驅動模塊,以及相應的設備文件。
/home 普通用戶的家目錄(或 $HOME 目錄、主目錄)
在 Linux 機器上,用戶主目錄一般直接或間接地置在此目錄下。其結構一般由本地機的管理員來決定。一般而言,系統的每一個用戶都有本身的家目錄,目錄以用戶名做爲名字存放在 /home 下面(例如 quietheart 用戶,其家目錄的名字爲 /home/quietheart )。該目錄中保存了絕大多數的用戶文件(用戶本身的配置文件,定製文件,文檔,數據等), root 用戶除外(參見後面的 /root 目錄)。因爲這個目錄包含了用戶實際的數據,一般系統管理員爲這個目錄單獨掛載一個獨立的磁盤分區,這樣這個目錄的文件系統格式就可能和其餘目錄不同了(儘管表面上看,這個目錄仍是屬於根目錄的一棵子樹上),將系統文件和數據文件分開存放,有利於維護。
/root 用戶root的 $HOME 目錄
系統管理員(就是 root 用戶或超級用戶)的主目錄比較特殊,不存放在 /home 中,而是直接放在 /root 目錄下了。
/etc 全局的配置文件存放目錄
系統和程序通常均可以經過修改相應的配置文件,來進行配置。例如,要配置系統開機的時候啓動那些程序,配置某個程序啓動的時候顯示什麼樣的風格等等。一般這些配置文件都集中存放在 /etc 目錄中,因此想要配置什麼東西的話,能夠在 /etc 下面尋找咱們可能須要修改的文件。一些大型套件,如 X11 ,在 /etc 下它們本身的子目錄。系統配置文件能夠放在這裏或在 /usr/etc 。 不過全部程序老是在 /etc 目錄下查找所需的配置文件,你也能夠將這些文件連接到目錄 /usr/etc 。另外,還一個須要注意的常見現象就是,當某個程序在某個用戶下運行的時候,可能會在該用戶的家目錄中生成一個配置文件(通常這個文件最開始就是 /etc 下相應配置文件的拷貝,存放相應於「當前用戶」的配置),這樣當前用戶能夠經過配置這個家目錄的配置文件,來改變程序的行爲,而且這個行爲只是該用戶特有的。緣由就是:通常來講一個程序啓動,若是須要讀取一些配置文件的話,它會首先讀取當前用戶家目錄的配置文件,若是存在就使用;若是不存在它就到 /etc 下讀取全局的配置文件進而啓動程序。就是這個配置文件不自動生成,咱們手動在本身的家目錄中建立一個文件的話,也有許多程序會首先讀取到這個家目錄的文件而且以它的配置做爲啓動的選項(例如咱們能夠在家目錄中建立 vim 程序的配置文件 .vimrc ,來配置本身的 vim 程序)。
/usr 這個目錄中包含了命令庫文件和在一般操做中不會修改的文件
這個目錄對於系統來講也是一個很是重要的目錄,其地位相似Windows上面的 Program Files 目錄(請原諒我可能這樣作比較不太恰當^_^)。安裝程序的時候,默認就是安裝在此文件內部某個子文件夾內。輸入命令後系統默認執行 /usr/bin 下的程序(固然,前提是這個目錄的路徑已經被添加到了系統的環境變量中)。此目錄一般也會掛載一個獨立的磁盤分區,它應保存共享只讀類文件,這樣它能夠被運行 Linux 的不一樣主機掛載。
/usr/lib 目標庫文件,包括動態鏈接庫加上一些一般不是直接調用的可執行文件的存放位置
這個目錄功能相似 /lib 目錄,理說,這裏存放的文件應該是 /bin 目錄下程序所須要的庫文件的存放地,也不排除一些例外的狀況。
/usr/bin 通常使用者使用而且不是系統自檢等所必需可執行文件的目錄
此目錄至關於根文件系統下的對應目錄( /bin ),非啓動系統,非修復系統以及非本地安裝的程序通常都放在此目錄下。
/usr/sbin 管理員使用的非系統必須的可執行文件存放目錄
此目錄至關於根文件系統下的對應目錄( /sbin ),保存系統管理程序的二進制文件,而且這些文件不是系統啓動或文件系統掛載 /usr 目錄或修復系統所必需的。
/usr/share 存放共享文件的目錄
在此目錄下不一樣的子目錄中保存了同一個操做系統在不一樣構架下工做時特定應用程序的共享數據(例如程序文檔信息)。使用者能夠找到一般放在 /usr/doc 或 /usr/lib 或 /usr/man 目錄下的這些相似數據。
/usr/include C程序語言編譯使用的頭文件
Linux 下開發和編譯應用程序所須要的頭文件通常都存放在這裏,經過頭文件來使用某些庫函數。默認來講這個路徑被添加到了環境變量中,這樣編譯開發程序的時候編譯器會自動搜索這個路徑,從中找到你的程序中可能包含的頭文件。
/usr/local 安裝本地程序的通常默認路徑
當咱們下載一個程序源代碼,編譯而且安裝的時候,若是不特別指定安裝的程序路徑,那麼默認會將程序相關的文件安裝到這個目錄的對應目錄下。例如,安裝的程序可執行文件被安裝(安裝實質就是複製)到了 /usr/local/bin 下面,此程序(可執行文件)所須要依賴的庫文件被安裝到了 /usr/local/lib 目錄下,被安裝的軟件若是是某個開發庫(例如 Qt , Gtk 等)那麼相應的頭文件可能就被安裝到了 /usr/local/include 中等等。也就是說,這個目錄存放的內容,通常都是咱們後來本身安裝的軟件的默認路徑,若是擇了這個默認路徑做爲軟件的安裝路徑,被安裝的軟件的所文件都限制在這個目錄中,其中的子目錄就相應於根目錄的子目錄。
/proc 特殊文件目錄
這個目錄採用一種特殊的文件系統格式( proc 格式),內核支持這種格式。其中包含了所有虛擬文件。它們並不保存在磁盤中,也不佔據磁盤空間(儘管命令 ls -c 會顯示它們的大小)。當您查看它們時,您實際上看到的是內存裏的信息,這些文件助於咱們瞭解系統內部信息。例如:
├1/ 關於進程1的信息目錄。每一個進程在/proc 下一個名爲其進程號的目錄。 ├cpuinfo 處理器信息,如類型、製造商、型號和性能。 ├devices 當前運行的核心配置的設備驅動的列表。 ├dma 顯示當前使用的DMA通道。 ├filesystems 核心配置的文件系統。 ├interrupts 顯示使用的中斷,and how many of each there have been. ├ioports 當前使用的I/O端口。 ├kcore 系統物理內存映象。與物理內存大小同樣,但實際不佔這麼多內存; ├kmsg 核心輸出的消息。也被送到syslog 。 ├ksyms 核心符號表。 ├loadavg 系統」平均負載」;3個沒意義的指示器指出系統當前的工做量。 ├meminfo 存儲器使用信息,包括物理內存和swap。 ├modules 當前加載了哪些核心模塊。 ├net 網絡協議狀態信息。 ├self 到��看/proc 的程序的進程目錄的符號鏈接。 ├stat 系統的不一樣狀態 ├uptime 系統啓動的時間長度。 └version 核心版本。
/opt 可擇的文件目錄
這個目錄表示的是可擇的意思,些自定義軟件包或者第方工具,就能夠安裝在這裏。好比在 Fedora Core 5.0 中,OpenOffice 就是安裝在這裏。些咱們本身編譯的軟件包,就能夠安裝在這個目錄中;經過源碼包安裝的軟件,能夠把它們的安裝路徑設置成 /opt 這樣來安裝。這個目錄的做用一點相似 /usr/local 。
/mnt 臨時掛載目錄
這個目錄通常是用於存放掛載儲存設備的掛載目錄的,好比磁盤,光驅,網絡文件系統等,當咱們須要掛載某個磁盤設備的時候,能夠把磁盤設備掛載到這個目錄上去,這樣咱們能夠直接經過訪問這個目錄來訪問那個磁盤了。通常來講,咱們最好在 /mnt 目錄下面多創建幾個子目錄,掛載的時候掛載到這些子目錄上面,由於一般咱們可能不只僅是掛載一個設備吧?
/media 掛載的媒體設備目錄
掛載的媒體設備目錄,通常外部設備掛載到這裏,例如 cdrom 等。好比咱們插入一個U盤,咱們通常會發現, Linux 自動在這個目錄下創建一個 disk 目錄,而後把U盤掛載到這個 disk 目錄上,經過訪問這個 disk 來訪問U盤。
/var 內容常常變化的目錄
此目錄下文件的大小可能會改變,如緩衝文件,日誌文件,緩存文件,等通常都存放在這裏。
/tmp 臨時文件目錄
該目錄存放系統中的一些臨時文件,文件可能會被系統自動清空。的系統直接把 tmpfs 類型的文件系統掛載到這個目錄上, tmpfs 文件系統由 Linux 內核支持,在這個文件系統中的數據,其實是內存中的,因爲內存的數據斷電易失,當系統從新啓動的時候咱們就會發現這個目錄被清空了。
/lost+found 恢復文件存放的位置
當系統崩潰的時候,在系統修復過程當中須要恢復的文件,可能就會在這裏被找到了,這個目錄通常爲空。
以上目錄,是最多見的重要目錄。其中,有些目錄初學者容易混淆,這裏簡單區分一下:
其餘還一些目錄例如: /home/user/bin, /home/user/opt, /home/user/etc, /usr/local/etc 等等,其做用都是相似於 /etc, /bin 等目錄的,可能只是層次概念不一樣了,使用 Linux 時間長了,會逐漸體會到其中的含義。
固然,咱們能夠無視這些目錄,像使用Windows那樣自由的,無論啥文件,想往哪存就往哪存,仍是那句話,使用 Linux 時間長了,會逐漸體會到其中的含義,到時候也許咱們想要亂來都不行了呢。^_^
在大多數 Linux 系統上面,咱們可使用一個命令: man hier ,經過這個命令的輸出,就知道「根目錄」中所子目錄的做用了。這個命令含義我很少說了,總之這裏的 hier 就是對 Linux 文件系統中各級目錄的標準功能,是一個你們都約定俗成了的東西。想要了解每一個目錄更詳細的信息,須要仔細參考 man hier 的輸出。下面就是一個比較簡短的中文描述的對文件系統目錄分類的 FHS 標準,也就是對 man hier 的簡單翻譯。
NAME 名稱 hier - 文件系統描述 DESCRIPTION 描述 一個典型的Linux系統具如下幾個目錄結構: / 根目錄,是所目錄樹開始的地方。 /bin 此目錄下包括了單用戶方式及系統啓動或修復所用到的所執行程序。 /boot 包括了引導程序的靜態文件。此目錄下包括了在引導過程當中所必需的文件。系統裝載程序及配製文件在 /sbin 和 /etc 目錄中找到。 /dev 對應物理設備的指定文件或驅動程序。參見mknod(1)。 /dos 若是MS-DOS和Linux共存於一臺計算機時,這裏一般用於存放DOS 文件系統。 /etc 用於存放本地機的配置文件。一些大型套件,如X11,在 /etc 下它們本身的子目錄。系統配置文件能夠放在這裏或在 /usr/etc。 不過所程序老是在 /etc 目錄下查找所需的配置文件,你也能夠將這些文件連接到目錄 /usr/etc. /etc/skel 當創建一個新用戶帳號時,此目錄下的文件一般被複制到用戶的主目錄下。 /etc/X11X11 window system所需的配置文件。 /home 在Linux機器上,用戶主目錄一般直接或間接地置在此目錄下。其結構一般由本地機的管理員來決定。 /lib 此目錄下包含系統引導和在根用戶執行命令所必需用到的共享庫。 /mnt 掛載臨時文件系統的掛載點。 /proc 這是提供運行過程和核心文件系統 proc 掛載點。這一」僞」文件系統在如下章節中詳細敘述 proc(5)。 /sbin 相似於 /bin 此目錄保存了系統引導所需的命令,但這些命令通常使用者不能執行。 /tmp 此目錄用於保存臨時文件,臨時文件在平常維護或在系統啓動時無需通知即可刪除 /usr 此目錄一般用於從一個獨立的分區上掛載文件。它應保存共享只讀類文件,這樣它能夠被運行Linux的不一樣主機掛載。 /usr/X11R6 X-Window系統 Version 11 release 6. /usr/X11R6/bin X-Windows系統使用的二進制文件;一般是在對更傳統的 /usr/bin/X11 中文件的符號鏈接。 /usr/X11R6/lib 保存與X-Windows系統關數據文件。 /usr/X11R6/lib/X11 此目錄保存與運行X-Windows系統關其餘文件。一般是對來自 /usr/lib/X11 中文件的符號鏈接。 /usr/X11R6/include/X11 此目錄保存包括使用X11窗口系統進行編譯程序所需的文件。一般是對來自 /usr/lib/X11 中文件的符號鏈接。 /usr/bin 這是執行程序的主要目錄,其中的絕大多數爲通常使用者使用,除了那些啓動系統或修復系統或不是本地安裝的程序通常都放在此目錄下。 /usr/bin/X11 X11執行文件放置的地方;在Linux系統中,它一般是對 /usr/X11R6/bin. 符號鏈接表 /usr/dict 此目錄保存拼寫檢查器所使用的詞彙表文件。 /usr/doc 此目錄下應能夠找到那些已安裝的軟件文件。 /usr/etc 此目錄可用來那些存放整個網共享的配置文件。然而那可執行命令指向老是使用參照使用 /etc 目錄下的文件。 /etc 目錄下鏈接文件應指向 /usr/etc. 目錄下適當的文件。 /usr/include C程序語言編譯使用的Include」包括」文件。 /usr/include/X11 C程序語言編譯和X-Windows系統使用的 Include」包括」文件。它一般中指向 /usr/X11R6/include/X11. 符號鏈接表。 /usr/include/asm 申明彙編函數的Include」包括」文件,它一般是指向 /usr/src/linux/include/asm 目錄的符號鏈接 /usr/include/linux 包含系統變動的信息一般是指向 /usr/src/linux/include/linux 目錄的符號鏈接表,來得到操做系統特定信息。(注:使用者應在此自行包含那些保證本身開發的程序正常運行所需的libc 函數庫。無論怎樣,Linux核心系統不是設計用來執行直接運行用戶程序的,它並不知道用戶程序須要使用哪一個版本的libc庫 。若是你隨意將 /usr/include/asm 和 /usr/include/linux 指向一個系統核心,系統極可能崩潰。Debian系統不這麼作。它使用 libc*-dev運行包中提供的核心繫統標識,以保證啓動所正確的文件。) /usr/include/g++ GNU C++編譯程序所使用的Include」包括」文件。 /usr/lib 目標庫文件,包括動態鏈接庫加上一些一般不是直接調用的可執行文件案。一些複雜的程序可能在此佔用整個子目錄。 /usr/lib/X11 存放X系統數據文件及系統配置文件的地方。 Linux中一般是指向 /usr/X11R6/lib/X11 目錄的符號鏈接表。 /usr/lib/gcc-lib GNU C 編譯程序所使用的可執行文件案和」包括」文件。 gcc(1). /usr/lib/groff GNU groff 文件格式系統所使用的文件。 /usr/lib/uucp uucp(1) 所使用的文件。 /usr/lib/zoneinfo 關時區信息文件文件。 /usr/local 安裝在本地執行程序的地方。 /usr/local/bin 在此地放置本地執行程序的二進制文件。 /usr/local/doc 放置本地文件。 /usr/local/etc 安裝在本地程序的配置文件。 /usr/local/lib 安裝在本地程序的庫文件。 /usr/local/info 安裝在本地程序關信息文件。 /usr/local/man 安裝在本地程序使用手冊。 /usr/local/sbin 安裝在本地的系統管理程序。 /usr/local/src 安裝在本地程序的原始碼。 /usr/man 手冊頁一般放在此目錄,或相關子目錄下。 /usr/man//man[1-9] 此目錄在指定的地方以原始碼形式存放手冊頁。系統在所的手冊頁中使用本身獨特的語言及代碼集,可能會省略 substring 子字符串。 /usr/sbin 此目錄保存系統管理程序的二進制碼,這些文件不是系統啓動或文件系統掛載 /usr 目錄或修復系統所必需的。 /usr/share 在此目錄下不一樣的子目錄中保存了同一個操做系統在不一樣構架下工做時特定應用程序的共享數據。使用者能夠找到一般放在 /usr/doc 或 /usr/lib 或 /usr/man 目錄下的這些數據。 /usr/src 系統不一樣組成部份的源文件包括參考數據報。不要將你本身與項目關的文件放這裏,由於在安裝軟件外,/usr下的文件屬性除一般設爲只讀。 /usr/src/linux 系統核心資源一般拆包安裝於此。這是系統中重要的一環,由於 /usr/include/linux 符號鏈接表指向此目錄。你應當使用其餘目錄來來編譯創建新核心。 /usr/tmp 此目錄再也不使用了。它應指向目錄 /var/tmp。 這個連接只是出於系統兼容的目的,通常再也不使用。 /var 此目錄下文件的大小可能會改變,如緩衝文件可日誌文件。 /var/adm 此目錄爲 /var/log 甩替代,一般是指向 /var/log 的符號鏈接表。 /var/backups 此目錄用來存放重要系統文件的後備文件 /var/catman/cat[1-9] or /var/cache/man/cat[1-9] 此目錄存儲根據手冊分類預先格式化的參考手冊頁。(這些參考手冊頁是相互獨立的) /var/lock 此目錄存儲鎖定文件。依據命名習慣,設備鎖定文件是 LCKxxxxx xxxxx與在文件系統中該設備名相同,使用的格式是HDU UUCP鎖定文件,例如包含進程標識PID的鎖定文件是一個10字節的ASCII格式的數字,後面跟一個換行符。 /var/log 各類日誌文件。 /var/preserve 這是 vi(1) 存放正在編輯中的文件,以便之後能夠恢復。 /var/run 運行時的變量文件,如存放進程標識和登入使用者信息的文件。 (utmp) 此目錄下文件在系統啓動時被自動清除。 /var/spool 各類程序產生的緩衝或排除等待的文件 /var/spool/at at(1) 的做業存緩區 /var/spool/cron cron(1) 的做業存緩區 /var/spool/lpd 打印緩存文件。 /var/spool/mail 使用者郵箱。 /var/spool/smail 存放 smail(1) 郵件發送程序的緩衝文件。 /var/spool/news 新聞子系統的緩衝目錄 /var/spool/uucp uucp(1) 的緩衝文件 /var/tmp 相似 /tmp, 此目錄保存未指定持續時間的臨時文件。