Linux 文件系統(tǒng)詳解

文章來源: https://linux.cn/article-9798-1.html
本文略有刪減, 僅供學習交流使用, 侵刪

早在 1996 年,在真正理解文件系統(tǒng)的結構之前,我就學會了如何在我嶄新的 Linux 上安裝軟件。這是一個問題,但對程序來說不是大問題,因為即使我不知道實際的可執(zhí)行文件在哪里,它們也會神奇地工作。問題在于文檔。

你知道,那時候,Linux 不是像今天這樣直觀、用戶友好的系統(tǒng)。你必須讀很多東西。你必須知道你的 CRT 顯示器的掃描頻率以及撥號調制解調器的噪音來龍去脈,以及其他數(shù)以百計的事情。 我很快就意識到我需要花一些時間來掌握目錄的組織方式以及 /etc(不是用于“其它”文件),/usr(不是用于“用戶”文件)和 /bin (不是“垃圾桶”)的意思。

本教程將幫助你比我當時更快地了解這些。

結構

從終端窗口探索 Linux 文件系統(tǒng)是有道理的,這并不是因為作者是一個脾氣暴躁的老人,并且對新孩子和他們漂亮的圖形工具不以為然(盡管某些事實如此),而是因為終端,盡管只是文本界面,才是更好地顯示 Linux 目錄樹結構的工具。

事實上,幫助你了解這一切的、應該首先安裝的第一個工具的名為:tree。如果你正在使用 Ubuntu 或 Debian ,你可以:

sudo apt install tree

在 Red Hat 或 Fedora :

sudo dnf install tree

對于 SUSE/openSUSE 可以使用 zypper

sudo zypper install tree

對于使用 Arch (Manjaro,Antergos,等等)使用:

  1. sudo pacman -S tree

……等等。

一旦安裝好,在終端窗口運行 tree 命令:

  1. tree /

上述指令中的 / 指的是根目錄。系統(tǒng)中的其他目錄都是從根目錄分支而出,當你運行 tree 命令,并且告訴它從根目錄開始,那么你就可以看到整個目錄樹,系統(tǒng)中的所有目錄及其子目錄,還有它們的文件。

如果你已經使用你的系統(tǒng)有一段時間了,這可能需要一段時間,因為即使你自己還沒有生成很多文件,Linux 系統(tǒng)及其應用程序總是在記錄、緩存和存儲各種臨時文件。文件系統(tǒng)中的條目數(shù)量會快速增長。

不過,不要感到不知所措。 相反,試試這個:

tree -L 1 /

你應該看到如圖 1 所示。

tree

tree

上面的指令可以翻譯為“只顯示以 /(根目錄) 開頭的目錄樹的第一級”。 -L 選項告訴樹你想看到多少層目錄。

大多數(shù) Linux 發(fā)行版都會向你顯示與你在上圖中看到的相同或非常類似的結構。 這意味著,即使你現(xiàn)在感到困惑,掌握這一點,你將掌握大部分(如果不是全部的話)全世界的 Linux 文件系統(tǒng)。

為了讓你開始走上掌控之路,讓我們看看每個目錄的用途。 當我們查看每一個目錄的時候,你可以使用 ls 來查看他們的內容。

目錄

從上到下,你所看到的目錄如下

/bin

/bin 目錄是包含一些二進制文件的目錄,即可以運行的一些應用程序。 你會在這個目錄中找到上面提到的 ls 程序,以及用于新建和刪除文件和目錄、移動它們基本工具。還有其它一些程序,等等。文件系統(tǒng)樹的其他部分有更多的 bin 目錄,但我們將在一會兒討論這些目錄。

/boot

/boot 目錄包含啟動系統(tǒng)所需的文件。我必須要說嗎? 好吧,我會說:不要動它! 如果你在這里弄亂了其中一個文件,你可能無法運行你的 Linux,修復被破壞的系統(tǒng)是非常痛苦的一件事。 另一方面,不要太擔心無意中破壞系統(tǒng):你必須擁有超級用戶權限才能執(zhí)行此操作。

/dev

`/dev 目錄包含設備文件。 其中許多是在啟動時或甚至在運行時生成的。 例如,如果你將新的網絡攝像頭或 USB 隨身碟連接到你的機器中,則會自動彈出一個新的設備條目。

/etc

/etc 的目錄名稱會讓人變得非常的困惑。/etc 得名于最早的 Unix 系統(tǒng)們,它的字面意思是 “etcetera”(諸如此類) ,因為它是系統(tǒng)文件管理員不確定在哪里放置的文件的垃圾場。

現(xiàn)在,說 /etc 是“要配置的所有內容(Everything To Configure)”更為恰當,因為它包含大部分(如果不是全部的話)的系統(tǒng)配置文件。 例如,包含系統(tǒng)名稱、用戶及其密碼、網絡上計算機名稱以及硬盤上分區(qū)的安裝位置和時間的文件都在這里。 再說一遍,如果你是 Linux 的新手,最好是不要在這里接觸太多,直到你對系統(tǒng)的工作有更好的理解。

/home

/home 是你可以找到用戶個人目錄的地方。在我的情況下,/home 下有兩個目錄:/home/paul,其中包含我所有的東西;另外一個目錄是 /home/guest 目錄,以防有客人需要使用我的電腦。

/lib

/lib 是庫文件所在的地方。庫是包含應用程序可以使用的代碼文件。它們包含應用程序用于在桌面上繪制窗口、控制外圍設備或將文件發(fā)送到硬盤的代碼片段。

在文件系統(tǒng)周圍散布著更多的 lib 目錄,但是這個直接掛載在 //lib 目錄是特殊的,除此之外,它包含了所有重要的內核模塊。 內核模塊是使你的顯卡、聲卡、WiFi、打印機等工作的驅動程序。

/media

/media 目錄中,當你插入外部存儲器試圖訪問它時,將自動掛載它。與此列表中的大多數(shù)其他項目不同,/media 并不追溯到 1970 年代,主要是因為當計算機正在運行而動態(tài)地插入和檢測存儲(U 盤、USB 硬盤、SD 卡、外部 SSD 等),這是近些年才發(fā)生的事。

/mnt

然而,/mnt 目錄是一些過去的殘余。這是你手動掛載存儲設備或分區(qū)的地方。現(xiàn)在不常用了。

/opt

/opt 目錄通常是你編譯軟件(即,你從源代碼構建,并不是從你的系統(tǒng)的軟件庫中安裝軟件)的地方。應用程序最終會出現(xiàn)在 /opt/bin 目錄,庫會在 /opt/lib 目錄中出現(xiàn)。

稍微的題外話:應用程序和庫的另一個地方是 /usr/local,在這里安裝軟件時,也會有 /usr/local/bin/usr/local/lib 目錄。開發(fā)人員如何配置文件來控制編譯和安裝過程,這就決定了軟件安裝到哪個地方。

/proc

/proc,就像 /dev 是一個虛擬目錄。它包含有關你的計算機的信息,例如關于你的 CPU 和你的 Linux 系統(tǒng)正在運行的內核的信息。與 /dev 一樣,文件和目錄是在計算機啟動或運行時生成的,因為你的系統(tǒng)正在運行且會發(fā)生變化。

/root

/root 是系統(tǒng)的超級用戶(也稱為“管理員”)的主目錄。 它與其他用戶的主目錄是分開的,因為你不應該動它。 所以把自己的東西放在你自己的目錄中,伙計們。

/run

/run 是另一個新出現(xiàn)的目錄。系統(tǒng)進程出于自己不可告人的原因使用它來存儲臨時數(shù)據。這是另一個不要動它的文件夾。

/sbin

/sbin/bin 類似,但它包含的應用程序只有超級用戶(即首字母的 s )才需要。你可以使用 sudo 命令使用這些應用程序,該命令暫時允許你在許多 Linux 發(fā)行版上擁有超級用戶權限。/sbin 目錄通常包含可以安裝、刪除和格式化各種東西的工具。你可以想象,如果你使用不當,這些指令中有一些是致命的,所以要小心處理。

/usr

/usr 目錄是在 UNIX 早期用戶的主目錄所處的地方。然而,正如我們上面看到的,現(xiàn)在 /home 是用戶保存他們的東西的地方。如今,/usr 包含了大量目錄,而這些目錄又包含了應用程序、庫、文檔、壁紙、圖標和許多其他需要應用程序和服務共享的內容。

你還可以在 /usr 目錄下找到 binsbinlib 目錄,它們與掛載到根目錄下的那些有什么區(qū)別呢?現(xiàn)在的區(qū)別不是很大。在早期,/bin 目錄(掛載在根目錄下的)只會包含一些基本的命令,例如 lsmvrm ;這是一些在安裝系統(tǒng)的時候就會預裝的一些命令,用于維護系統(tǒng)的一個基本的命令。 而 /usr/bin 目錄則包含了用戶自己安裝和用于工作的軟件,例如文字處理器,瀏覽器和一些其他的軟件。

但是許多現(xiàn)代的 Linux 發(fā)行版只是把所有的東西都放到 /usr/bin 中,并讓 /bin 指向 /usr/bin,以防徹底刪除它會破壞某些東西。因此,Debian、Ubuntu 和 Mint 仍然保持 /bin/usr/bin (和 /sbin/usr/sbin )分離;其他的,比如 Arch 和它衍生版,只是有一個“真實”存儲二進制程序的目錄,/usr/bin,其余的任何 bin 目錄是指向 /usr/bin` 的“假”目錄。

/srv

/srv 目錄包含服務器的數(shù)據。如果你正在 Linux 機器上運行 Web 服務器,你網站的 HTML文件將放到 /srv/http(或 /srv/www)。 如果你正在運行 FTP 服務器,則你的文件將放到 /srv/ftp

/sys

/sys 是另一個類似 /proc/dev 的虛擬目錄,它還包含連接到計算機的設備的信息。

在某些情況下,你還可以操縱這些設備。 例如,我可以通過修改存儲在 /sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight/brightness 中的值來更改筆記本電腦屏幕的亮度(在你的機器上你可能會有不同的文件)。但要做到這一點,你必須成為超級用戶。原因是,與許多其它虛擬目錄一樣,在 /sys 中打亂內容和文件可能是危險的,你可能會破壞系統(tǒng)。直到你確信你知道你在做什么。否則不要動它。

/tmp

/tmp 包含臨時文件,通常由正在運行的應用程序放置。文件和目錄通常(并非總是)包含應用程序現(xiàn)在不需要但以后可能需要的數(shù)據。

你還可以使用 /tmp 來存儲你自己的臨時文件 —— /tmp 是少數(shù)掛載到根目錄下而你可以在不成為超級用戶的情況下與它進行實際交互的目錄之一。

/var

/var 最初被如此命名是因為它的內容被認為是variable,因為它經常變化。今天,它有點用詞不當,因為還有許多其他目錄也包含頻繁更改的數(shù)據,特別是我們上面看到的虛擬目錄。

不管怎樣,/var 目錄包含了放在 /var/log 子目錄的日志文件之類。日志是記錄系統(tǒng)中發(fā)生的事件的文件。如果內核中出現(xiàn)了什么問題,它將被記錄到 /var/log 下的文件中;如果有人試圖從外部侵入你的計算機,你的防火墻也將嘗試記錄。它還包含用于任務的假脫機程序。這些“任務”可以是你發(fā)送給共享打印機必須等待執(zhí)行的任務,因為另一個用戶正在打印一個長文檔,或者是等待遞交給系統(tǒng)上的用戶的郵件。

你的系統(tǒng)可能還有一些我們上面沒有提到的目錄。例如,在屏幕截圖中,有一個 /snap 目錄。這是因為這張截圖是在 Ubuntu 系統(tǒng)上截取的。Ubuntu 最近將 snap包作為一種分發(fā)軟件的方式。/snap 目錄包含所有文件和從 snaps 安裝的軟件。

更深入的研究

這里僅僅談了根目錄,但是許多子目錄都指向它們自己的一組文件和子目錄。圖 2 給出了基本文件系統(tǒng)的總體概念(圖片是在 Paul Gardner 的 CC BY-SA 許可下提供的),Wikipedia 對每個目錄的用途進行了總結

圖 2:標準 Unix 文件系統(tǒng)

圖 2:標準 Unix 文件系統(tǒng)

要自行探索文件系統(tǒng),請使用 cd 命令:cd將帶你到你所選擇的目錄( cd 代表更改目錄)。

如果你不知道你在哪兒,pwd會告訴你,你到底在哪里,( pwd 代表打印工作目錄 ),同時 cd命令在沒有任何選項或者參數(shù)的時候,將會直接帶你到你自己的主目錄,這是一個安全舒適的地方。

最后,cd ..將會帶你到上一層目錄,會使你更加接近根目錄,如果你在 /usr/share/wallpapers 目錄,然后你執(zhí)行 cd .. 命令,你將會跳轉到 /usr/share目錄

要查看目錄里有什么內容,使用 ls 或這簡單的使用 l 列出你所在目錄的內容。

當然,你總是可以使用 tree 來獲得目錄中內容的概述。在 /usr/share 上試試——里面有很多有趣的東西。

總結

盡管 Linux 發(fā)行版之間存在細微差別,但它們的文件系統(tǒng)的布局非常相似。 你可以這么說:一旦你了解一個,你就會都了解了。 了解文件系統(tǒng)的最好方法就是探索它。 因此,伴隨 treelscd 進入未知的領域吧。

你不會只是因為查看文件系統(tǒng)就破壞了文件系統(tǒng),因此請從一個目錄移動到另一個目錄并進行瀏覽。 很快你就會發(fā)現(xiàn) Linux 文件系統(tǒng)及其布局的確很有意義,并且你會直觀地知道在哪里可以找到應用程序,文檔和其他資源。

via: https://www.linux.com/blog/learn/intro-to-linux/2018/4/linux-filesystem-explained

作者:PAUL BROWN 選題:lujun9972 譯者:amwps290 校對:wxy

本文由 LCTT 原創(chuàng)編譯,Linux中國 榮譽推出

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容