前言
Linux 的檔案系統跟 Windows 不太一樣,雖然都有絕對位置與相對位置的觀念,但是在 Linux 上不會有 C 槽、D 槽等,存放的也不只有檔案與資料夾。由於 macOS 底層也是 Unix 系統,檔案系統的觀念和 Linux 幾乎一樣,所以本文的內容對 macOS 使用者也同樣適用。本文將講解 Linux 與 macOS 的檔案系統基本知識,讓剛入門的朋友們可以更快有概念開始使用。
目錄與路徑分隔符號
在開始之前,先來認識一下路徑中的分隔符號。早期的 Windows 只能使用反斜線 \ 作為資料夾的分隔符號,後來也支援了斜線 /。而 Linux 與 macOS 則一律使用斜線 /,本文的範例也都以斜線來表示。
認識特殊目錄符號
在 Linux 與 macOS 的終端機中,有幾個特殊符號代表著不同的目錄位置,這些符號在操作上非常常用,先來一一認識。
/ 根目錄(Root Directory)
目錄就是資料夾,根目錄就是電腦中所有檔案最頂端的資料夾,也就是在任何一個資料夾一直選回到上一層最終會到達的那個資料夾。在 Linux 與 macOS 上,根目錄就是 /,整台電腦只有一個根目錄,所有檔案都在這棵樹底下。
Windows 則不太一樣,會有 C 槽、D 槽等多個磁碟區,每個磁碟區各有自己的根目錄。因此在 Windows 上看到 /Windows 這個路徑,可能是 C:/Windows,也可能是 D:/Windows,光靠 /Windows 無法確定實際位置。但在 Linux 與 macOS 上就不會有這個問題,/etc 就是 /etc,不會有歧義。
~ 家目錄(Home Directory)
家目錄是每個使用者專屬的資料夾,用來存放個人的檔案、設定檔、桌面等資料。三個系統的家目錄位置各有不同:
- Linux:
/home/使用者名稱,例如/home/kyle - macOS:
/Users/使用者名稱,例如/Users/kyle - Windows:
C:/Users/使用者名稱,例如C:/Users/kyle - Windows XP 之前版本
C:/Documents and Settings/使用者名稱
如果是 Linux 的 root(最高管理者)帳號,家目錄比較特別,是在 /root 而不是 /home/root。
在終端機中,波浪符號 ~ 就是家目錄的捷徑。不管目前在哪個位置,輸入 cd ~ 就能回到自己的家目錄。其實直接輸入 cd 不加任何參數,效果也是一樣的。
# 回到家目錄
$ cd ~
# 效果一樣,直接 cd 也會回到家目錄
$ cd
# 用波浪符號組合路徑,前往家目錄底下的 Documents 資料夾
$ cd ~/Documents
. 目前目錄與 .. 上一層目錄
一個點 . 代表目前所在的目錄,兩個點 .. 代表上一層目錄。這兩個符號在操作路徑時非常實用。
# 顯示目前目錄底下的檔案(. 代表目前位置,這裡 ls . 和 ls 效果一樣)
$ ls .
# 回到上一層目錄
$ cd ..
# 往上兩層
$ cd ../..
# 也可以組合使用:回到上一層後進入 config 資料夾
$ cd ../config
注意 .. 的「上一層」指的是資料夾結構中的上一層,和瀏覽器的「上一頁」是完全不同的概念。

絕對路徑與相對路徑
認識了這些特殊符號之後,接下來要了解路徑的兩種表示方式:絕對路徑與相對路徑。
絕對路徑是從根目錄 / 開始的完整路徑,代表電腦裡面唯一的一個位置,不會有兩個檔案擁有相同的絕對路徑。例如:
/etc存放系統設定檔的資料夾/etc/passwd存放系統帳號的檔案/etc/systemd這是資料夾,底下還有資料/dev/sda這是一顆硬碟!下一節會提到
絕對路徑就像是從根目錄開始往下找的完整地址,整個檔案系統可以展開成樹狀結構,有學過資料結構的朋友們應該有學到如何走訪樹(Tree),資料夾是節點(Node)、檔案是葉子,用走訪樹的方式就能遍歷硬碟內所有資料了。
相對路徑則是要看目前站在哪個位置來決定。比如站在根目錄 / 直接找 passwd 檔案會找不到,但站在 /etc 目錄就能找到了。如果站在 /etc/systemd 想要找 passwd 檔案呢?可以輸入 ../passwd,意思是回到上一層再尋找 passwd。甚至還可以輸入 ../../dev,代表往上兩層找到 /dev 這個資料夾。
# 使用絕對路徑切換目錄,不管目前在哪裡都能到達
$ cd /etc/systemd
# 使用相對路徑,從 /etc/systemd 回到上一層的 /etc
$ cd ..
# 使用相對路徑,從 /etc 往上一層再進入 dev
$ cd ../dev
Linux 資料夾裡面不只存放檔案
在 Windows 資料夾裡面存放的都是實際儲存在硬碟內的檔案與資料夾,但 Linux 系統比較特別,除了檔案與資料夾之外還有硬體裝置、程式 Socket(接口、插座)、程式行程。
聽起來可能有點奇怪,但 Linux 的 /dev 資料夾內存放著一堆看起來像是檔案的東西,其實都是電腦上的硬體裝置,例如硬碟、光碟機、USB 裝置、RS232 裝置等,這點需要習慣一下。macOS 也有類似的設計,同樣可以在 /dev 底下找到硬體裝置的檔案。
檔案系統
常用 Windows 的朋友應該多少知道 Windows 的磁碟格式叫做 NTFS,全稱為 New Technology File System,是 Windows 專用的格式。Linux 不使用這個格式,在 Linux 上有很多選擇,目前最常見的是 EXT4,此外還有 XFS、Btrfs 等可以選用。
macOS 則使用 Apple 自家開發的 APFS(Apple File System),這是從 macOS High Sierra 開始採用的格式,更早期的 macOS 使用的是 HFS+。
由於三個系統各自使用不同的檔案系統格式,不經過額外處理的話,彼此沒辦法直接讀寫對方的硬碟,或是只能讀取不能寫入。
| 作業系統 | 常見檔案系統 |
|---|---|
| Windows | NTFS |
| Linux | EXT4、XFS、Btrfs |
| macOS | APFS(舊版為 HFS+) |