另外還要注意,就是在我們用戶的角度上,無論在Windows還是 Linux 上面,都是使用路徑來訪問一個文件的。表示文件的路徑由 “文件所在的目錄+各級目錄的分隔符+文件” 三個部分組成,這個策略在兩者之間是一樣的,所不同的是,Windows下面目錄分隔符是 \ , Linux 下面是 / ,也許這也是兩者之間為了表示其各自立場不同的一個原因吧?^_^
再有,假設用戶安裝和卸載一個程序 firefox :
Windows系統中指定或不指定安裝路徑類似,程序的安裝目錄會在 C:\Program Files\Firefox 類似的目錄中,或指定的安裝路徑中; 可執行文件一般在程序的安裝路徑;依賴的內部庫、第三方庫、和系統庫可能在安裝路徑中,也可能在C:\Windows\System32, 或 C:\Windows\system 等類似的路徑;而程序訪問期間的系統和用戶配置文件和產生的輸入輸出文件,可能會在安裝路徑配置中,或者在 C:\Windows\ 下的某些文件中(比如注冊表數據庫文件、用戶目錄等),這就不一定了。而且不同的系統版本,應用程序版本下,這些目錄的具體名稱和路徑可能會有所不同。卸載的時候由于不確定哪些地方安裝了什么內容,很容易造成文件刪除補全,遺留系統垃圾等現象,造成系統越來越癱腫。
Linux 系統中如果不指定安裝路徑,所有程序的可執行文件在 /usr/bin 中, 全局配置文件在 /etc/firefox 類似的目錄, 用戶配置文件一般在用戶主目錄的 .firefox 的路徑下(用戶主目錄路徑名稱統一格式為 /home/
可見, 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 虛擬文件系統的根目錄中的一個子目錄,我們看不到除了這個“根目錄”以外的其他的目錄,那些目錄和操作系統的具體實現相關是被操作系統內核隱藏起來了的,所以這里就介紹我們所能看到的文件系統中的“根目錄”的各個子目錄中的作用吧。
在 Linux 文件系統中的每一個子目錄都有特定的目的和用途。一般都是根據 FHS 標準定義一個正式的文件系統結構的,這個標準規定了哪些目錄應該哪些作用。這里我們先介紹一些日常經常用到的目錄,然后給出 FHS 相關的內容。
常用的重要目錄
這里,根據本人的使用經驗,給出比較常見重要的一些目錄,最開始我們對它們有所了解就可以了。隨著對 Linux 使用的經驗的加深,我們會了解越來越多的目錄。對目錄的功能知道得越多,我們對 Linux 系統的工作原理就理解的越深刻,理解操作系統的工作原理,更助于我們更為規范地使用和理解系統中每個目錄存在的意義,直至最后幾乎知道系統中的每個文件……
/根目錄包含了幾乎所的文件目錄。相當于中央系統。進入的最簡單方法是: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/includeC程序語言編譯使用的頭文件Linux 下開發和編譯應用程序所需要的頭文件一般都存放在這里,通過頭文件來使用某些庫函數。默認來說這個路徑被添加到了環境變量中,這樣編譯開發程序的時候編譯器會自動搜索這個路徑,從中找到你的程序中可能包含的頭文件。
/usr/local安裝本地程序的一般默認路徑當我們下載一個程序源代碼,編譯并且安裝的時候,如果不特別指定安裝的程序路徑,那么默認會將程序相關的文件安裝到這個目錄的對應目錄下。例如,安裝的程序可執行文件被安裝(安裝實質就是復制)到了 /usr/local/bin 下面,此程序(可執行文件)所需要依賴的庫文件被安裝到了 /usr/local/lib 目錄下,被安裝的軟件如果是某個開發庫(例如 Qt , Gtk 等)那么相應的頭文件可能就被安裝到了 /usr/local/include 中等等。也就是說,這個目錄存放的內容,一般都是我們后來自己安裝的軟件的默認路徑,如果擇了這個默認路徑作為軟件的安裝路徑,被安裝的軟件的所文件都限制在這個目錄中,其中的子目錄就相應于根目錄的子目錄。
/proc特殊文件目錄這個目錄采用一種特殊的文件系統格式( proc 格式),內核支持這種格式。其中包含了全部虛擬文件。它們并不保存在磁盤中,也不占據磁盤空間(盡管命令 ls -c 會顯示它們的大小)。當您查看它們時,您實際上看到的是內存里的信息,這些文件助于我們了解系統內部信息。例如:
/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 恢復文件存放的位置當系統崩潰的時候,在系統修復過程中需要恢復的文件,可能就會在這里被找到了,這個目錄一般為空。
以上目錄,是最常見的重要目錄。其中,有些目錄初學者容易混淆,這里簡單區分一下:
/bin , /sbin 與 /usr/bin , /usr/sbin
/bin 一般存放對于用戶和系統來說“必須”的程序(二進制文件)。
/sbin 一般存放用于系統管理的“必需”的程序(二進制文件),一般普通用戶不會使用,根用戶使用。
/usr/bin 一般存放的只是對用戶和系統來說“不是必需的”程序(二進制文件)。
/usr/sbin 一般存放用于系統管理的系統管理的不是必需的程序(二進制文件)。
/lib 與 /usr/lib
/lib 和 /usr/lib 的區別類似 /bin, /sbin 與 /usr/bin, /usr/sbin 。
/lib 一般存放對于用戶和系統來說“必須”的庫(二進制文件)。
/usr/lib 一般存放的只是對用戶和系統來說“不是必需的”庫(二進制文件)。
其他還一些目錄例如: /home/user/bin, /home/user/opt, /home/user/etc, /usr/local/etc 等等,其作用都是類似于 /etc, /bin 等目錄的,可能只是層次概念不同了,使用 Linux 時間長了,會逐漸體會到其中的含義。
當然,我們可以無視這些目錄,像使用Windows那樣自由的,不管啥文件,想往哪存就往哪存,還是那句話,使用 Linux 時間長了,會逐漸體會到其中的含義,到時候也許我們想要亂來都不行了呢。^_^
-
Linux
+關注
關注
87文章
11399瀏覽量
212034 -
WINDOWS
+關注
關注
4文章
3592瀏覽量
90580
原文標題:比起 Windows,怎樣解讀 Linux 的文件系統與目錄結構?
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Linux的目錄文件結構
linux系統和windows系統的區別
Linux目錄結構與Windows對比
Linux操作系統的目錄結構
華為linux和windows的區別_華為linux系統好用嗎
STM32MP157 Linux系統移植開發篇7:Linux內核目錄結構詳解

評論