第九課 文件與目錄操作
用戶的數據和程序大多以文件的形式保存。用戶使用Linux系統的過程中,需要經常對文件和目錄進行操作。本章講述了文件與目錄的基本概念,有關文件和目錄操作的命令以及如何在Linux環境下運行DOS命令。
文件與目錄的基本概念
文件與文件名
在多數操作系統中都有文件的概念。文件是Linux用來存儲信息的基本結構,它是被命名(稱為文件名)的存儲在某種介質(如磁盤、光盤和磁帶等)上的一組信息的集合。Linux文件均為無結構的字符流形式。文件名是文件的標識,它由字母、數字、下劃線和圓點組成的字符串來構成。用戶應該選擇有意義的文件名。Linux要求文件名的長度限制在255個字符以內。
為了便於管理和識別,用戶可以把擴展名作為文件名的一部分。圓點用於區分文件名和擴展名。擴展名對於將文件分類是十分有用的。用戶可能對某些大眾已接納的標准擴展名比較熟悉,例如,C語言編寫的源代碼文件總是具有C的擴展名。用戶可以根據自己的需要,隨意加入自己的文件擴展名。
以下例子都是有效的Linux文件名。
preface
chapter1.txt
xu.c
xu.bak
文件的類型
Linux系統中有三種基本的文件類型:普通文件、目錄文件和設備文件。
1.普通文件普通文件是用戶最經常面對的文件。它又分為文本文件和二進制文件。
1)文本文件:這類文件以文本的ASCII碼形式存儲在計算機中。它是以"行"為基本結構的一種信息組織和存儲方式。
2)二進制文件:這類文件以文本的二進制形式存儲在計算機中,用戶一般不能直接讀懂它們,只有通過相應的軟件才能將其顯示出來。二進制文件一般是可執行程序、圖形、圖像、聲音等等。
2.目錄文件設計目錄文件的主要目的是用於管理和組織系統中的大量文件。它存儲一組相關文件的位置、大小等與文件有關的信息。目錄文件往往簡稱為目錄。
3.設備文件設備文件是Linux系統很重要的一個特色。Linux系統把每一個I/O設備都看成一個文件,與普通文件一樣處理,這樣可以使文件與設備的操作盡可能統一。從用戶的角度來看,對I/O設備的使用和一般文件的使用一樣,不必了解I/O設備的細節。設備文件可以細分為塊設備文件和字符設備文件。前者的存取是以一個個字符塊為單位的,後者則是以單個字符為單位的。
目錄
樹型目錄結構
在計算機系統中存有大量的文件,如何有效的組織與管理它們,並為用戶提供一個使用方便的接口是文件系統的一大任務。Linux系統以文件目錄的方式來組織和管理系統中的所有文件。所謂文件目錄就是將所有文件的說明信息采用樹型結構組織起來--即我們常說的目錄。也就是說,整個文件系統有一個"根"(root),然後在根上分"杈"(Directory),任何一個分杈上都可以再分杈,杈上也可以長出"葉子"。"根"和"杈"在Linux中被稱為是"目錄"或"文件夾"。而"葉子"則是一個個的文件。實踐證明,此種結構的文件系統效率比較高。
如前所述,目錄也是一種類型的文件。Linux系統通過目錄將系統中所有的文件分級、分層組織在一起,形成了Linux文件系統的樹型層次結構。以根目錄為起點,所有其他的目錄都由根目錄派生而來。一個典型的Linux系統的樹型目錄結構如圖3.1所示。用戶可以浏覽整個系統,可以進入任何一個已授權進入的目錄,訪問那裡的文件。
上圖中,我們只給出了目錄結點名稱,而沒有給出各個目錄"之下"的每一個文件。實際上,各個目錄結點"之下"都會有一些文件和子目錄。並且,系統在建立每一個目錄時,都會自動為它設定兩個目錄文件,一個是".",代表該目錄自己,另一個是"..",代表該目錄的父目錄,對於根目錄,"."和".."都代表其自己。
Linux目錄提供了管理文件的一個方便途徑。每個目錄裡面都包含文件。用戶可以為自己的文件創建自己的目錄,也可以把一個目錄下的文件移動或復制到另一目錄下,而且能移動整個目錄,並且和系統中的其他用戶共享目錄和文件。也就是說。我們能夠方便地從一個目錄切換到另一個目錄,而且可以設置目錄和文件的管理權限,以便允許或拒絕其他人對其進行訪問。同時文件目錄結構的相互關聯性使分享數據變得十分容易,幾個用戶可以訪問同一個文件。因此允許用戶設置文件的共享程度。
需要說明的是,根目錄是Linux系統中的特殊目錄。Linux是一個多用戶系統,操作系統本身的駐留程序存放在以根目錄開始的專用目錄中,有時被指定為系統目錄。在圖3.1中那些根目錄下的目錄就是系統目錄。
工作目錄、用戶主目錄與路徑
如前所述,目錄是Linux系統組織文件的一種特殊文件。為使用戶更好地使用目錄,我們介紹有關目錄的一些基本概念。
I.工作目錄與用戶主目錄
從邏輯上講,用戶在登錄到Linux系統中之後,每時每刻都"處在"某個目錄之中,此目錄被稱作工作目錄或當前目錄(Working Directory)。工作目錄是可以隨時改變的。用戶初始登錄到系統中時,其主目錄(Home Directory)就成為其工作目錄。工作目錄用"."表示,其父目錄用".."表示。
用戶主目錄是系統管理員增加用戶時建立起來的(以後也可以改變),每個用戶都有自己的主目錄,不同用戶的主目錄一般互不相同。
用戶剛登錄到系統中時,其工作目錄便是該用戶主目錄,通常與用戶的登錄名相同。
用戶可以通過一個"~"字符來引用自己的主目錄。
例如命令
/home/WANG$ cat ~/class/software_1
和下面的命令
/home/WANG$ cat /home/WANG/class/software_1意義相同。shell將用用戶主目錄名來替換"~"字符。目錄層次建立好之後,用戶就可以把有關的文件放到相應的目錄中,從而實現對文件的組織。
對文件進行訪問時,需要用到"路徑"(Path)的概念。
II.路徑
顧名思義,路徑是指從樹型目錄中的某個目錄層次到某個文件的一條道路。此路徑的主要構成是目錄名稱,中間用"/"分開。任一文件在文件系統中的位置都是由相應的路徑決定的。
用戶在對文件進行訪問時,要給出文件所在的路徑。路徑又分相對路徑和絕對路徑。絕對路徑是指從"根"開始的路徑,也稱為完全路徑;相對路徑是從用戶工作目錄開始的路徑。
應該注意到,在樹型目錄結構中到某一確定文件的絕對路徑和相對路徑均只有一條。絕對路徑是確定不變的,而相對路徑則隨著用戶工作目錄的變化而不斷變化。這一點對於我們以後使用某些命令如cp和tar等大有好處。
用戶要訪問一個文件時,可以通過路徑名來引用。並且可以根據要訪問的文件與用戶工作目錄的相對位置來引用它,而不需要列出這個文件的完整的路徑名。例如,用戶WANG有一個名為class的目錄,該目錄中有兩個文件:software_1和hardware_1。若用戶WANG想顯示出其class目錄中的名為software_1的文件,可以使用下列命令:
/home/WANG$ cat /home/WANG/class/software_1
用戶也可以根據文件software_1與當前工作目錄的相對位置來引用該文件。這時命令為:
/home/WANG$ cat class/software_1
本文由TurboLinux提供