Linux檔案管理背景知識

2021-06-20 01:53:45 字數 4013 閱讀 1506

對於計算機來說,所謂的資料就是0和1的序列。這樣的乙個序列可以儲存在記憶體中,但記憶體中的資料會隨著關機而消失。為了將資料長久儲存,我們把資料儲存在光碟或者硬碟中。根據我們的需要,我們通常會將資料分開儲存到檔案這樣乙個個的小單位中(所謂的小,是相對於所有的資料而言)。但如果資料只能組織為檔案的話,而不能分類的話,檔案還是會雜亂無章。每次我們搜尋某乙個檔案,就要乙個檔案又乙個檔案地檢查,太過麻煩。檔案系統(file system)是就是檔案在邏輯上組織形式,它以一種更加清晰的方式來存放各個檔案。

1. 路徑與檔案簡介

檔案被組織到檔案系統(file system)中,通常會成為乙個樹狀(tree)結構。linux有乙個根目錄/, 也就是樹狀結構的最頂端。這個樹的分叉的最末端都代表乙個檔案,而這個樹的分叉處則是乙個目錄(directory, 相當於我們在windows介面中看到的資料夾)。在圖1中看到的是整個的乙個檔案樹。如果我們從該樹中擷取一部分,比如說從目錄vamei開始往下,實際上也構成乙個檔案系統。

要找到乙個檔案,除了要知道該檔案的檔名,還需要知道從樹根到該檔案的所有目錄名。從根目錄開始的所有途徑的目錄名和檔名構成乙個路徑(path)。比如說,我們在linux中尋找乙個檔案file.txt,不僅要知道檔名(file.txt),還要知道完整路徑,也就是絕對路徑(/home/vamei/doc/file.txt)。從根目錄錄/, 也就是樹狀結構的最頂端出發,經過目錄home, vamei, doc,最終才看到檔案file.txt。整個檔案系統層層分級(hierarchy),vamei是home的子目錄,而home是vamei的父目錄。

在linux中,我們用ls命令來顯示目錄下的所有檔案,比如$ls /home/vamei/doc

(如該圖中所示的檔案系統,即綠色構成的樹。最頂端的根目錄(/),沿紅色箭頭標出的路徑,我們最終找到檔案file.txt。)

2. 目錄

在linux系統中,目錄也是一種檔案。所以/home/vamei是指向目錄檔案vamei的絕對路徑。

這個檔案中至少包含有以下條目:

.       指向當前目錄

..      指向父目錄

除此之外,目錄檔案中還包含有屬於該目錄的檔案的檔名,比如vamei中就還要有如下條目,指向屬於該目錄的檔案:

docmovie

photo

linux解釋乙個絕對路徑的方式如下:先找到根目錄檔案,從該目錄檔案中讀取home目錄檔案的位置,然後從home檔案中讀取vamei的位置……直到找到目錄doc中的file.txt的位置。

由於目錄檔案中都有.和..的條目,我們可以在路徑中加入.或者..來表示當前目錄或者父目錄,比如/home/vamei/doc/..與/home/vamei等同。

此外,linux會維護乙個工作目錄(present working directory)的變數。你可以隨時查詢到到工作目錄(在命令列輸入$pwd)。這是為了省去每次都輸入很長的絕對路徑的麻煩。比如說我們將工作目錄更改為/home/vamei ($cd /home/vamei),那麼此時我們再去找file.txt就可以省去/home/vamei/ ($ls doc/file.txt),這樣得到的路徑叫相對路徑(relative path),上面的doc/file.txt就是這樣乙個相對路徑。

3. 檔案操作

對於檔案,我們可以讀取(read)

,寫入(write)

和執行(execute)

。讀取是從已經存在的檔案中獲得資料。寫入是向新的檔案或者舊的檔案寫入資料。如果檔案儲存的是可執行的二進位製碼,那麼它可以被載入記憶體,作為乙個程式執行。在linux的檔案系統中,如果某個使用者想對某個檔案執行某一種操作,那麼該使用者必須擁有對該檔案進行這一操作的許可權。檔案許可權的資訊儲存在檔案資訊(metadata)中, 見下一節。

3. 檔案附加資訊 (metadata)

檔案自身包含的只有資料。檔名實際上儲存在目錄檔案。除了這些之外,還有作業系統維護的檔案附加資訊,比如檔案型別,檔案尺寸,檔案許可權,檔案修改時間,檔案讀取時間等。可以用ls命令查詢檔案資訊($ls -l file.txt),得到如下結果:

-rw-r--r-- 1 vamei vamei 8445 sep  8 07:33 file1.txt

我們先介紹最開始的-,它表示檔案型別,說明file1.txt是常規檔案(如果是目錄檔案,則應顯示d)。

隨後有九個字元,為rw-r--r--,它們用於表示檔案許可權。這九個字元分為三組,rw-, r--, r--,分別對應擁有者(owner),擁有組(owner group)和所有其他人(other)。回顧linux開機啟動,登入後,我會有乙個使用者身份和乙個組身份, 相當於我的名片

。第一組表示,如果我的名片上的使用者身份證明我是該檔案的擁有者,那麼我就可以對該檔案

有讀取(r),寫入(w)該檔案的許可權,但不擁有執行(-,如果擁有執行許可權,則為x)該檔案的許可權。第二組表示,如果我的名片上的組身份證明我所在的組是該檔案的擁有組的一員,那麼我有從該檔案讀入的許可權。第三組表示,如果我的名片顯示我既不是擁有者,也不是擁有組的一員,那麼我只有讀入的許可權。當我想要進行乙個讀取操作時,linux會先看我是否是擁有者下文會進一步解釋擁有者和擁有組。

後面的1是硬連線(hard link)數目(link count)。當file1.txt出現在目錄檔案/home/vamei/doc中時,那麼就建立了乙個硬鏈結。file1.txt是允許屬於多個目錄檔案,相當於同乙個檔案出現在多個目錄下,也就是說link count可以不止是1。當link count = 0的時候,相當於檔案脫離了檔案樹,作業系統就會刪除該檔案。所以很多時候unlink與remove在作業系統中是乙個意思。由於軟鏈結(soft link)的廣泛使用(soft link不會影響link count,而且可以跨越檔案系統),現在較少手動建立硬連線。

之後的vamei表示使用者vamei是檔案的擁有者(owner),檔案的擁有者有權更改檔案許可權(比如改為rwxrwxrwx)。而後面的vamei檔案的擁有組是組vamei。檔案的擁有者和擁有組在檔案建立時就附加在檔案上(相當於給檔案上鎖,只有有合適名片的使用者才能開啟操作)。要注意,linux有乙個超級使用者root (也叫做根使用者)

,該使用者擁有所有的檔案。

隨後的8445表示檔案大小,單位為byte。

sep 8 07:33表示檔案的上一次寫入的時間(modification time)。實際上在檔案附加資訊中還包含有檔案的上一次讀取時間(access time),沒有顯示出來。

4. 軟鏈結 (soft link, or symbolic link)

如上所說,軟鏈結不會影響檔案的link count。如果還記得windows系統的快捷方式的話,linux的軟鏈結(soft link,也叫做symbolic link)就是linux的快捷方式。軟鏈結本質上是乙個檔案,它的檔案型別是symbolic link。在這個檔案中,包含有鏈結指向的檔案的絕對路徑。當你從這個檔案讀取資料時,linux會把你導向所指向的檔案,然後從那個檔案中讀取(就好像你雙擊快捷方式的效果一樣)。軟鏈結可以方便的在任何地方建立,並指向任何乙個絕對路徑。

軟鏈結本身也是乙個檔案,也可以執行檔案所可以進行的操作。當我們對軟鏈結操作時,要注意我們是對軟鏈結本身操作,還是對軟鏈結指向的目標操作。如果是後者,我們就說該操作跟隨鏈結指引(follow the link)。

5. umask

當我們建立檔案的時候,比如使用touch,它會嘗試將新建檔案建立為許可權666,也就是rw-rw-rw-。但作業系統要參照許可權mask來看是否真正將檔案建立為666。許可權mask表示作業系統不允許設定的許可權位,比如說037(----wxrwx)的許可權mask意味著不允許設定設定group的wx位和other的rwx位。如果是這個許可權mask的話,最終的檔案許可權是rw-r----- (group的w位和other的rw位被mask)。

我們可以通過

$umask 022

的方式改變許可權mask。

計算機本質上是對資料進行處理的工具,而檔案是資料儲存的邏輯載體,所以了解linux檔案系統很重要。對於檔案系統的了解要結合linux的其他方面(比如使用者管理)進行有機的學習。

檔案許可權,擁有者,擁有組,超級使用者root

硬鏈結,軟鏈結,follow the link

Linux基礎知識 檔案管理

linux目錄與路徑 cd 切換目錄 例如 cd willhua,則回到使用者willhua的主資料夾 cd 或者cd,則表示回到自己的的主資料夾 cd 則表示回到上個目錄 pwd 顯示目前所在目錄 引數 mkdir 新建新目錄 引數 rmdir 刪除空目錄 引數 例如 rmdir p test1 ...

Linux基礎知識總結 檔案管理

檔案管理是linux日常操作比較重要的一塊,主要涉及到幾個常用指令的使用,熟練靈活的掌握只有靠不斷的實踐,這裡把知識總結一下,以備遺忘時能夠快速查詢。1 可執行檔案的搜尋 which 指令輸出乙個可執行檔案的詳細路徑,例如 which ls,會輸出,這個指令會在 path中查詢指令 whereis ...

linux學習筆記1 Linux背景知識

1 linux背景知識 gnu linux的歷史 unix作業系統 gun工程成立 linux核心出現 gnu linux作業系統 本課程的學習環境 1.1 gnu linux的歷史 1.1.1 unix作業系統簡介 1969年產於美國bell實驗室 at t公開了第一版的源 被多家廠商,科研機構修...