3.4.1 階層式檔案系統

在第二章的 2.1.4 這一節裡面,我們曾經簡單的介紹了 Linux 階層式檔案系統的結構,也說明了磁碟分割區跟檔案系統之間的關係,這邊我們要再作一個更詳細的說明,如圖3-1就是階層式檔案系統目錄樹的示意圖。


圖 3-1:階層式檔案系統目錄樹。


整個 Linux 檔案系統的最上層是根目錄 "/",底下再一層一層、分門別類的擁有許多的目錄與檔案,所以稱之為 "階層式" 的檔案系統,其實 Linux 底下的目錄也是一個檔案,只是裡面放的不是使用者的資料或程式,而是放位於此目錄底下一層的檔案的名稱、所在位置... 等資料,要在 Linux 的檔案系統裡面指定一個檔案的名稱有兩種方法,一種是指定絕對路徑,一種是指定相對路徑。

絕對路徑一定是由"/"開頭,從根目錄開始,一層一層的寫目錄的名稱,目錄跟目錄中間再以"/"相隔,所以上圖的兩個名為 "log" 的檔案,用絕對路徑來講的話,一個是 "/home/platin/log",一個是 "/tmp/log",Linux 不允許同一個目錄底下有兩個相同名稱的檔案,所以 Linux 系統裡面所有的絕對路徑檔名都是唯一的,不會有重複。

指定檔案的名稱的時候假如不用"/"開頭的,就表示是用相對路徑,相對路徑是以當前所在的目錄起算,並且用一個小數點"."表示當前目錄,兩個小數點".."表示上一層目錄,例如,假如我現在位於 /home/platin 底下,"cat log" 看到的就是 "/home/platin/log" 這個檔案,"cat ./log" 也是 "/home/platin/log" 這個檔案,".."表示上一層目錄,所以 /home/platin/ 底下的 "../john/" 就是 "/home/john/" 這個目錄,"/tmp/log" 可以表示為 "../../tmp/log",當前所在的目錄不同的時候,對同一個檔案的相對路徑表示法就不一樣,假如在 "/tmp/" 目錄底下,"cat log" 看到的就是 "/tmp/log" 了。

此外還可以用 '~' 符號開頭來表示使用者的家目錄,Linux 底下每個人都有一個自己的 "家目錄",這個目錄通常是在 "/home/" 底下跟使用者帳號同名的目錄,系統預設會讓使用者對自己家目錄底下的檔案有完整的存取權,這個目錄就是使用者自己的一塊小天地,可以存放自己的資料、程式,使用者剛登入系統的時候就是在自己的家目錄底下,以使用者 platin、家目錄在 "/home/platin" 為例子,"ls ~/" 就是 "ls /home/platin/" , "~/log" 就是 "/home/platin/log" 這個檔案,此外,'~' 後面加上使用者名稱的話,可以用來指到系統上其他使用者的家目錄,"~john/" 就相當於 "/home/john"。

讀者應該要熟悉利用上面提到的幾種方式在 Linux 系統裡面 "漫遊",底下便是一個例子,利用我們前面提到過的 "cd" 跟 "pwd" 指令,又,不要忘了 bash 按 [Tab] 鍵自動補齊的功能,遇到長一點的檔名,就多按按 [Tab] 喔:

[platin@h2 platin]$ pwd
/home/platin

我的帳號是 "patin",剛進到系統是在我的家目錄 "/home/platin" 底下,從這裡出發。

[platin@h2 platin]$ cd /usr
[platin@h2 /usr]$ pwd
/usr
[platin@h2 /usr]$ cd X11R6/lib/X11/
[platin@h2 X11]$ pwd
/usr/X11R6/lib/X11

先用絕對路徑進到 "/usr" 目錄,然後進 "X11R6/lib/X11",所以現在來到了 "/usr/X11R6/lib/X11" 囉;在打 "X11R6/lib/X11" 的時候試著這樣按看看 -> "X[Tab]l[Tab]X[Tab]"。

[platin@h2 X11]$ cd ../../bin/
[platin@h2 bin]$ pwd
/usr/X11R6/bin

到上兩層底下的 "bin" 目錄,所以在 "/usr/X11R6/bin" 底下。

[platin@h2 bin]$ cd ~
[platin@h2 platin]$ pwd
/home/platin

回家囉。