當使用Linux命令對文件進行操作時,就可訪問存儲在一個結構化環境中的信息。所有這些信息都存放在一個分層的結構中,可以方便且有條不紊地管理數據。重要的是,不僅應學會如何訪問這些數據,而且應學會如何控制對信息的訪問。對文件與目錄進行管理和維護可能是每個用戶最經常做的工作。
文件系統概念
磁盤上的文件系統是層次結構的,由若干目錄和其子目錄組成,最上層的目錄稱為根(root)目錄,用"/"表示。
1. 文件與目錄的定義
2. 文件結構
文件是Linux操作系統處理信息的基本單位。所有軟件都組織成文件。
文件的成分:無論文件是一個程序、一個文檔、一個數據庫,還是一個目錄,操作系統都會賦予它如下所示的同樣的結構。
①索引節點:又稱為I節點,是在文件系統結構中,包含相應文件信息的一個記錄,這些信息包括文件權限、文件主、文件大小等。
②數據:文件的實際內容,它可以是空的,也可以非常大,並且有自己的結構。
命名文件:文件名保存在目錄文件中。Linux的文件名幾乎可以由ASCⅡ字符的任意組合構成,文件名最長可多達255個字符(某些較老的文件系統類型把文件名長度限制為14個字符)。下面的慣例會使你更加方便地管理文件。
①文件名應盡量簡單,並且應反映出文件的內容。文件名幾乎沒有必要超過14個字符。
②除斜線(/)和空字符(AS口I字符\0)以外,文件名可以包含任意的ASCⅡ字符,因為那兩個字符被核心當做表示路徑名的特殊字符來解釋。
③習慣上允許使用下線符(_)和句點(.)來區別文件的類型,使文件名更易讀,但是應避免使用以下字符,因為對系統的shen來說,它們有特殊的含義。這些字符是:
; | < > ` “ ‘ $ ! % & * ? \ ( ) [ ]
此外,文件名應避免使用空格、制表符或其他控制字符。
④同類文件應使用同樣的後綴或擴展名。
⑤Linux系統區分文件名的大小寫,如名為letter的文件與名為Letter的文件不是同一個文件。
⑥以圓點(.)開頭的文件名是隱含文件,在默認方式下,使用15命令並不能把它們在屏幕上顯示出來。
文件類型操作系統支持以下文件類型:普通文件、目錄文件、設備文件及符號鏈接文件。
普通文件
普通文件也稱為常規文件,包含各種長度的字符串。核心對這些數據沒有進行結構化,只是作為有序的字符序列把它提交給應用程序。應用程序自己組織和解釋這些數據,通常把它們歸並為下述類型之一。
可以使用file命令來確定指定文件的類型。該命令可以將任意多個文件名當做參數,其一般使用格式是:
file文件名【文件名…】
目錄文件
目錄文件是一種特別文件,利用它可以構成文件系統的分層樹狀結構。如同普通文件那樣,目錄文件也包含數據,但目錄文件與普通文件的差別是:核心對這些數據進行結構化處理,即它是由成對的“Ⅰ節點號/文件名”構成的列表。
(1)Ⅰ節點號是檢索I節點表的下標,Ⅰ節點中存放有文件的狀態信息。
(2)文件名是給一個文件分配的文本形式的字符串,用來標記該文件。在一個指定的目錄中,任何兩項都不能有同樣的名字。
每個目錄的第一項都表示目錄本身,並以“點(.)”作為它的文件名。每個目錄的第二項的名字是“點點(..)",表示該目錄的父目錄。
應記住,以“.”開頭的文件名表示隱含文件,使用帶-a選項的ls命令可以列出它們。
當把文件添加到一個目錄中時,該目錄的尺寸會增大,以便容納新文件名。當刪除文件時,目錄的尺寸並不減小,而是核心對該目錄項做上特殊標記,以便下次添加一個文件時重新使用它。ls命令不會列出這些未被使用的項。
例如,利用以一F命令可以顯示當前目錄的內容:
# ls -ai
應注意,所列出的前兩項分別表示當前目錄和其父目錄。請查看是否有其他的隱含文件。如果使用不帶-a選項的ls命令,則隱含文件不再被顯示出來。如果使用不帶 –i 選項的ls命令,則文件的I節點號不再出現。
使用ls –d 命令,則只能看到當前目錄下的各子目錄名。
設備文件
設備文件是一種特別文件,除了在其文件Ⅰ節點中存放有屬性信息外,它們不包含任何數據。系統利用它們來標記各個設備驅動器,核心使用它們與硬件設備通信。有兩類特別設備文件,它們對應不同類型的設備驅動器。
(1)字符設備—最常用的設備類型,允許I/O傳送任意大小的數據,取決於設備本身的容量。使用這種接口的設備包括終端、打印機及鼠標。
(2)塊設備—這類設備利用核心緩沖區的自動緩存機制。緩沖區進行I/O傳送總是以KB為單位。使用這種接口的設備包括硬盤、軟盤和RAM盤。
設備文件的一個示例是當前正在使用的終端文件。tty命令可以顯示出這個文件名,例如:
# tty
/dev/tty01
通常,設備文件存放在/dev目錄之下。
符號鏈接文件
符號鏈接文件是一種特殊文件,提供對其他文件的參照。它們存放的數據是文件系統中通向文件的路徑。當使用符號鏈接文件時,核心自動訪問所保存的這個路徑。