Ubuntu 22.04 LTS下目錄結構

Ubuntu目錄結構概念,個人認為在 Linux下很重要, 因為太久沒接觸, 很多操作或是問題都會上網爬文; 過程中發現很多操作和設定都是很久以前的,即便觀念正確,可是對於指令或是語法等不熟悉, 常常按圖施工也未必會被保證成功, 所以覺得還是要先將目錄結構的一些基本以自己的觀念和想法來記錄與說明; 這邊可以理解目錄架構,顏色表示,一些指令

Ubuntu 22.04 LTS下目錄結構

在根目錄(root)底下打 ls, 可以看到很多檔案和目錄(資料夾), 而且還有不一樣的顏色; 如果目前不是在根, 就直接打 cd / 回到根目錄

所以這麼多的顏色和檔案哪些是我們會常用到的, 因為 distribution不一樣, 所以有些在以前像是 Slackware或是 Redhat或是其它等, 是不是都不相同; 在學習過程裡面依樣畫葫蘆是不是可行, 這邊就需要花點時間去搞懂; 先簡單去查詢一些資料, 還有自己土法煉鋼一個一個確認, 看看是不是理解有錯誤

1.針對顏色部分的註解可以參考此篇文章
2.個人採用表格方式先將幾個常用到的顏色列出
3.確認是否理解讓有差異
4.確認幾個部分的顯示

No目錄或
檔案名稱
Type顏色ls -a作用說明/功能
01bin連結很多目錄和檔案二進位,可執行檔或是指令,偏向一般使用者
02sbin連結很多目錄和檔案 二進位,可執行檔或是指令,偏向超級管理員
03lib連結很多目錄和檔案 /usr/lib 系統基本動態連結共用庫, 類似 dll, 應用程序&kerbel module; 主要是 for /bin 或 /sbin使用之共用庫
04lib32連結沒東西原Linux定義是 Alternate format essential shared libraries (optional).These would be the directories /lib32, /lib64, etc.
05lib64連結一個檔案 ld-linux-86-64-so.2 和 lib32所述相同; 屬於 32位元會在 lib32, 64位元會在 lib64; 個人認為這是給寫程式的人預留的,讓其如果需要使用連結,
06libx32連結沒東西x32所代表的意思並不是很清楚
07home 目錄 使用者目錄使用者家目錄,如果有新增使用者,就會在此建立目錄
08boot 目錄 存放核心和系統啟動檔案; 開機時啟動系統, 包含多重開機選項
09dev 目錄
10mnt 目錄
11opt 目錄
12root 目錄
13snap 目錄
14srv 目錄
15sys 目錄
16usr 目錄
17media 目錄
18var 目錄
19run 目錄
20proc 目錄
21etc 目錄
22lost_found 目錄
23swap.img
24tmp

cd bin

cd bin (01)

cd bin後可以看到有很多檔案, bin是一個連結檔案, 而這一目錄實際上就是 /usr/bin 下的目錄; 如果依據先前的定義, 這個 bin和 /usr/bin應該是不同, 但是在 Ubuntu下目前確認目錄和總數, 看起來應該是一樣的; 目錄底下很多執行檔案/指令, 屬於 binary檔案, 使用 vi去看,都是會看到亂碼; 這些 指令, 通常偏向非伺服器或網路”系統”管理的執行檔案/指令 會被放在這 /usr/bin 底下, 讓一般使用者可以進行作業系統的操作, 像是 passwd, paste, rm 都不一定是屬於架設伺服器或是網路系統需要或是針對操作系統進行重要的修復等, 所以適合一般使用者; 當一般使用者需要更一步的權限就可以使用 /usr/bin 下的 su或是 sudo 進行, 讓自己擁有更高的權限

採用 ls -l 來查看總數, 看看 /bin 和 /usr/bin底下的總數差異, 因為比較多所以用此方式來看差異; 看來都是相同

另外在 /bin下 應該都是指令, 可是還看到青色的檔案名稱, 所以順便確認一下, 這連結檔案是連結到哪裡, 先用 which 這個指令查看一下

which zstdmt 這邊看到是還是顯示在 /usr/bin/zstdmt 所以還是有點納悶, 應該是連結檔案的顏色, 所以表示還沒有理解清楚

剛好使用 ls -l 顯示出來, /usr/bin 下的 zstdmt實際上就是連結到 zstd這個指令, 所以這樣就能理解

cd sbin

cd sbin (02)

cd sbin 後可以看到有很多檔案, sbin一個連結檔案, 而這一目錄實際上就是 /usr/sbin 下的目錄; 底下很多執行檔案或是說指令,屬於 binary檔案, 使用 vi去看,都是會看到亂碼; 這些 指令, 主要都是偏向作業系統的系統管理或是偏向伺服器/網路系統管理等管理指令, 像是 fsck, gdisk, named, pppd, mkswap等等, 偏向管理員權限的概念或是 super user的使用; 這邊就可以自己想一下, 有寫自己使用到的指令應該是在哪裡?? 像是 ls, pwd, dd 這些一般都是使用者會用到的, 所以就會是在 /usr/bin下, 而不會在 /usr/sbin

cd lib/ cd lib32/ cd lib64/ cdlibx32 (03~06)

當前面提到可以用 ls -l來看一下每一個連結實際上是指到哪裡, 然後再依序 cd 查看這幾個連結底下包含哪些東西, 就可以確認每個檔案底下,有哪些東西,所代表的又是什麼, 這樣就會比較清楚

ls -l 清楚的看到都是在 /usr 底下的目錄; 但是這些檔案為什麼要採用連結方式在根目錄下? 目前還不是很清楚, 網路上有查到提及開機過程順序, 所以將此連結放置 / 底下, 這部分待日後釐清在說明理解

cd lib 後在 ls 看看底下有哪些檔案; 看起來有目錄, 執行檔, 連結檔, 還有白色的檔案; 白色檔案一般應該是文件,或是配置等, 但是先前到目前 vi 白色檔案還是有顯示亂碼部分, 所以這邊需要再確認是否就是所謂的 kernel module部分; 參考這篇文章是這樣說明; 所以看來應該是各個 distribution或是原先設計過程裡面的定義還是有所不同, 因為既然連結指/lib 應該就等同於 /usr/lib 就先這樣理解

在這邊同時可以看到 link file和指到的檔案都有不同的權限, 這部分可以在後面在弄清楚

Directory – /lib

Contains essential shared libraries and kernel modules.

Directory – /lib<qual>

Alternate format essential shared libraries (optional). These would be the directories /lib32, /lib64, etc.

Directory – /usr/lib

Libraries for programming and packages.

Directory – /usr/lib<qual>

Alternate format libraries (optional).

為了確認 lib和 /usr/lib是否相同, 這邊就再使用 ls -l 看看兩個目錄的總數, 其實也不需要, 因為連結不就是直接一樣, 但還是試試; 看起來一樣都是 1028; 所以先前的 definition 應該要說明的是原先的定義/想法/概念, /lib 和 /usr/lib 目前兩者在 Ubuntu 22.04下應該是相同

cd home (07)

home 目錄, 主要就是使用者的 home, 只要有新增使用者, 這邊就會多一個對應的使用者名稱的目錄, 這邊就不多說

cd boot (08)
cd dev (09)
cd mnt (10)

這世界沒有一件事情是虛空而生的
站在光里 , 背後就會有陰影
這深夜裡一片寂靜,是因爲你還沒有聽見聲音

馬良 <<坦白書>>