1. 程式人生 > 實用技巧 >Linux 檔案目錄都是什麼鬼?

Linux 檔案目錄都是什麼鬼?

Linux 檔案目錄都是什麼鬼?

相關推薦:

-----------

Linux 系統大家一定不陌生,學習工作中肯定會和 Linux 打交道。不過談及 Linux,給人的第一印象可能就是黑乎乎的命令列,亂七八糟的資料夾,甚至安裝軟體都不知道是怎麼安裝上去的。

其實這些問題都是用慣了 Windows 的後遺症,多用用 Linux 就會發現這玩意還是挺好用的,關鍵還能 DIY,非常裝逼:

言歸正傳,本文介紹一下 Linux 的檔案系統(File System),簡單介紹一下這些資料夾都是幹什麼的。

上圖是 Linux 檔案系統的一個整體結構,無論是什麼版本的 Linux 發行版,根目錄 /

基本上就是這些檔案。不要害怕這麼多資料夾,大部分都不需要你操心,只要大概瞭解它們是幹啥的就行了。

PS:我認真寫了 100 多篇原創,手把手刷 200 道力扣題目,全部發布在 labuladong的演算法小抄,持續更新。建議收藏,按照我的文章順序刷題,掌握各種演算法套路後投再入題海就如魚得水了。

/bin 和 /sbin

binBinary 的縮寫,存放著可執行檔案或可執行檔案的連結(類似快捷方式),如下圖:

你可以看到 cp, chmod, cat 等常用命令都在這裡。注意不要被圖示上的 TXT 字樣誤導了,Linux 不按字尾識別檔案型別,/bin 目錄中的檔案都是可執行的二進位制檔案,而不是文字檔案。

/bin 類似的是 /sbin 目錄,System Binary 的縮寫,這裡存放的命令可以對系統配置進行操作。普通使用者可能可以使用這裡的命令檢視某些系統狀態,但是如果想更改配置,就需要 sudo 授權或者切換成超級使用者。

可以看到一些熟悉的命令,比如 ifconfig, iptables。普通使用者可以使用 ifconfig 檢視網絡卡狀態,但是想配置網絡卡資訊,就需要授權了。

/boot

這裡是系統啟動需要的檔案,你可以看到 grub 資料夾,它是常見的開機載入程式。我們不應該亂動這裡的檔案。

/dev

devdevice 的縮寫,這裡存放這所有的裝置檔案。在 Linux 中,所有東西都是以檔案的形式存在的,包括硬體裝置。

比如說,sda, sdb 就是我電腦上的兩塊硬碟,後面的數字是硬碟分割槽:

滑鼠、鍵盤等等裝置也都可以在這裡找到。

/etc

這個目錄經常使用,存放很多程式的配置資訊,比如包管理工具 apt:

/etc/apt 中就存放著對應的配置,比如說映象列表(我配置的阿里雲映象):

如果你要修改一些系統程式的配置,十有八九要到 etc 目錄下尋找。

/lib

lib 是 Library 的縮寫,類似於 Windows 系統中存放 dll 檔案的庫,包含 bin 和 sbin 中可執行檔案的依賴。

也可能出現 lib32lib64 這樣的目錄,和 lib 差不多,只是作業系統位數不同而已。

PS:我認真寫了 100 多篇原創,手把手刷 200 道力扣題目,全部發布在 labuladong的演算法小抄,持續更新。建議收藏,按照我的文章順序刷題,掌握各種演算法套路後投再入題海就如魚得水了。

/media

這裡會有一個以你使用者名稱命名的資料夾,裡面是自動掛載的裝置,比如 U 盤,行動硬碟,網路裝置等。

比如說我在電腦上插入一個 U 盤,系統會把 U 盤自動給我掛載到 /media/fdl 這個資料夾裡(我的使用者名稱是 fdl),如果我要訪問 U 盤的內容,就可以在那裡找到。

/mnt

這也是和裝置掛載相關的一個資料夾,一般是空資料夾。media 資料夾是系統自動掛載裝置的地方,這裡是你手動掛載裝置的地方。

比如說,剛才我們在 dev 中看到了一大堆裝置,你想開啟某些裝置看看裡面的內容,就可以通過命令把裝置掛載到 mnt 目錄進行操作。

不過一般來說,現在的作業系統已經很聰明瞭,像掛載裝置的操作幾乎都不用你手動做,都被自動掛載到 media 目錄了。

/opt

opt 是 Option 的縮寫,這個資料夾的使用比較隨意,一般來說我們自己在瀏覽器上下載的軟體,安裝在這裡比較好。當然,包管理工具下載的軟體也可能被存放在這裡。

比如我在這裡存放了 Chrome 瀏覽器(google),網易雲音樂(netease),CLion IDE 等等軟體的資料夾。

/proc

procprocess 的縮寫,這裡存放的是全部正在執行程式的狀態資訊。

你會發現 /proc 裡面有一大堆數字命名的資料夾,這個數字其實是 Process ID(PID),資料夾裡又有很多檔案。

前面說過,Linux 中一切都以檔案形式儲存,類似 /dev,這裡的檔案也不是真正的檔案,而是程式和核心交流的一些資訊。比如說我們可以檢視當前作業系統的版本,或者檢視 CPU 的狀態:

如果你需要除錯應用程式,proc 目錄中的資訊也許會幫上忙。

/root

這是 root 使用者的家目錄,普通使用者需要授權才能訪問。

/run 和 /sys

用來儲存某些程式的執行時資訊和系統需要的一些資訊。比如說這個檔案:

sudo vim /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness

裡面儲存著一個數字,是你的顯示卡亮度,你修改這個數字就可以修改螢幕亮度。

需要注意的是,這兩個位置的資料都儲存在記憶體中,所以一旦重啟,/run/sys 目錄的資訊就會丟失,所以不要試圖在這裡存放任何檔案。

/srv

srvservice 的縮寫,主要用來存放服務資料。

對於桌面版 Linux 系統,這個資料夾一般是空的,但是對於 Linux 伺服器,Web 服務或者 FTP 檔案服務的資源可以存放在這裡。

/tmp

tmptemporary 的縮寫,儲存一些程式的臨時檔案。

臨時檔案可能起到很重要的作用。比如經常聽說某同學的 Word 文件崩潰了,好不容易寫的東西全沒了,Linux 的很多文字編輯器都會在 /tmp 放一份當前文字的 copy 作為臨時檔案,如果你的編輯器意外崩潰,還有機會在 /tmp 找一找臨時檔案搶救一下。

比如上圖的 VSCode Crashes 應該就是 VScode 編輯器存放臨時檔案的地方。

當然,tmp 資料夾在系統重啟之後會自動被清空,如果沒有被清空,說明系統刪除某些檔案失敗,也許需要你手動刪除一下。

/usr

usr 是 Universal System Resource 的縮寫,這裡存放的是一些非系統必須的資源,比如使用者安裝的應用程式。

/usr/usr/local 目錄中又含有 binsbin 目錄,也是存放可執行檔案(命令),但和根目錄的 binsbin 不同的是,這裡大都是使用者使用的工具,而非系統必須使用的。

比如說 /usr/bin 中含有我通過包管理工具安裝的應用程式 Chrome 瀏覽器和 goldendict 字典的可執行檔案:

值得一提的是,如果使用 Linux 桌面版,有時候在桌面找不到應用程式的快捷方式,就需要在 /usr/share/applications 中手動配置桌面圖示檔案:

/var

varvariable 的縮寫,這個名字是歷史遺留的,現在該目錄最主要的作用是儲存日誌(log)資訊,比如說程式崩潰,防火牆檢測到異常等等資訊都會記錄在這裡。

這是我的 /var/log 目錄:

日誌檔案不會自動刪除,也就是說隨著系統使用時間的增長,你的 var 目錄佔用的磁碟空間會越來越大,也許需要適時清理一下。

/home

最後說 home 目錄,這是普通使用者的家目錄。在桌面版的 Linux 系統中,使用者的家目錄會有下載、視訊、音樂、桌面等資料夾,這些沒啥可說的,我們說一些隱藏的比較重要的資料夾(Linux 中名稱以 . 開頭就是隱藏檔案)。

這是我的家目錄的部分檔案:

其中 .cache 資料夾儲存應用快取資料,.config 資料夾儲存了一部分應用程式的配置,比如說我的 Chrome 瀏覽器配置就是那裡面。但是還有一部分應用程式並不把配置儲存在 .config 資料夾,而是自己建立一個隱藏資料夾,存放自己的配置檔案等等資訊,比如你可以看到 Intellij 的配置檔案就不在 .config 中。

最後說 .local 資料夾,有點像 /usr/local,裡面也有 bin 資料夾,也是存放可執行檔案的。比如說我的 python pip 以及 pip 安裝的一些工具,都存放在 ~/.local/bin 目錄中。但是,存在這裡的檔案,只有該使用者才能使用。

這就是為什麼,有時候普通使用者可以使用的命令,用 sudo 或者超級使用者卻被告知找不到該命令。因為有的命令是特定使用者家目錄裡的,被新增到了該使用者的 PATH 環境變數裡,他可以直接用。你超級使用者想用當然可以,但是得寫全絕對路徑才行。

最後總結

如果修改系統配置,就去 /etc 找,如果修改使用者的應用程式配置,就在使用者家目錄的隱藏檔案裡找。

你在命令列裡可以直接輸入使用的命令,其可執行檔案一般就在以下幾個位置:

/bin    
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/home/USER/.local/bin
/home/USER/.local/sbin

如果你寫了一個指令碼/程式,想在任何時候都能直接呼叫,可以把這個指令碼/程式新增到上述目錄中。

如果某個程式崩潰了,可以到 /val/log 中嘗試尋找出錯資訊,到 /tmp 中尋找殘留的臨時檔案。

裝置檔案在 /dev 目錄,但是一般來說系統會自動幫你掛載諸如 U 盤之類的裝置,可以到 /media 資料夾訪問裝置內容。

_____________

我的 線上電子書 有 100 篇原創文章,手把手帶刷 200 道力扣題目,建議收藏!對應的 GitHub 演算法倉庫 已經獲得了 70k star,歡迎標星!