在進入文件操做以前,首先引入Linux中的一個重要概念:Linux下一切皆文件。mysql
這句話很好理解,就是它的字面意思。在Linux系統中,目錄是一種文件,快捷方式是一種文件,硬件設備(硬盤,U盤,鼠標,光驅;打印機等等)是文件,連命令也是文件。這是由於Unix哲學(Unix philosophy)中將文本流做爲程序之間的通用接口,而文本流的載體天然就是文件了。linux
Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.sql
一個程序只作一件事,並作好。程序要能協做。程序要能處理文本流,由於這是通用的接口。數據庫
--quoted in A Quarter Century of Unixide
因此Linux中所謂的擴展(extension)只是爲了幫助瞭解該文件的用途,不會發生改了擴展名程序就運行不了的狀況(控制檯環境下,圖形界面狀況下,linux就是一個簡易版Windows)。一個linux文件能不能被執行,只與執行者擁有的權限和文件內是否有可被對應程序執行的數據有關,與文件名根本一點關係都沒有。函數
文件是linux系統的基石,而linux又有衆多的發行版,若是每發行版都用本身的想法來配置文件放置的目錄,那換一個發行版就和換了一個系統同樣。在早期的UNIX系統中,各個廠家各自定義了本身的UNIX系統的文件系統構成,局面比較混亂。有鑑於此,Linux在面世不久就開始了對文件系統進行標準化的活動,通過多年的發展,有了如今的 Filesystem Hierarchy Standard (FHS) 標準,目前的最新版本爲2004年發佈的2.3 (可前往 http://www.pathname.com/fhs/ 查看)。spa
Linux 的文件系統採用了級層式的樹狀目錄結構,其中最上層是根目錄 (root, /), 其餘全部目錄都包含在根目錄中。目錄樹(directory tree) 結構示意圖以下:
blog
目錄樹起始點爲根目錄 (root, /), 除了表示根目錄,"/" 同時也是目錄名的分隔符。好比到達patrick這個目錄的路徑爲 /home/patrick,其中第一個 "/" 表示根目錄,第二個 "/" 則是用來分隔home目錄和patrick目錄。接口
注:root這個詞在linux中的意義不少,若是以帳號的角度看,所謂的root指的是 「超級用戶」 或者叫 「系統管理員」 的身份,這裏以 「目錄」 的角度看,root指的是根目錄。進程
上圖中列出了根目錄下的五個子目錄,事實上FHS規定了13個根目錄下的次級目錄,並對其中 /var 和 /usr 兩個目錄行進了更詳細的定義,這裏只是簡要說明一下,有個大體概念就好了。
/usr: 放置Unix軟件資源 (Unix Software Resource), 全部系統默認的軟件 (distributions 發佈者提供的軟件)都放置在這裏,相似Windows中的 "C:\Windows\ + C:\Program files\" 綜合體,通常來講是佔用硬盤容量最多的目錄。
/var: variable的縮寫,放置系統運行產生的文件,好比log,mysql數據庫的文件等。
/bin: 放置可以被全部用戶使用的可執行文件 (binary 二進制文件), 咱們知道系統其實僅認識且可執行的是二進制文件。
/sbin: 放置重要的系統文件,僅供root用戶使用, 與bin相比,多出來的那個 s 表明 superuser
/boot: 放置開機會用到的文件
/dev: 放置設備文件 (devices)
/etc: 放置各種配置文件 (etcetera 附加物)
/home: 放置出 root 外的全部用戶主目錄,~表明當前登錄用戶的主目錄, ~user1表明user1的主目錄,就至關於/home/user1/
/root: root的主目錄
/lib: 放置開機時會用到的函數庫,以及 /bin 和 /sbin 下指令會呼叫的函數庫
/media: 當你插入一個可移動設備時(U盤,SD卡,DVD等),系統會經過這個目錄下對應的子目錄來讀取設備,這就是所謂的掛載 (mount)
/mnt: 掛載 (mount) 的縮寫,這個目錄是/media的前身,有了/media以後, 這個目錄常就被用於臨時掛載了
/opt: 用於放置加載項 (add-ons), 也就是第三方軟件(非distribution提供的),不過習慣於放在 /usr/local 下
/proc: 放置系統運行信息,如進程信息 (process) , 他的數據都放在內存中,因此不佔用任何硬盤空間
/tmp: 放置臨時文件 (temporary),應按期清理,不可放置重要文件,FHS甚至建議在每次開機時將/tmp目錄清空
事實上,每一個放行版針對FHS都有異同,畢竟FHS只是一個參考標準,但差別有限。