歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 一步一步學Linux C:文件類型和屬性

一步一步學Linux C:文件類型和屬性

日期:2017/3/1 10:26:07   编辑:Linux編程

文件是有名字的一組相關信息的集合,在Linux 系統中,文件的准確定義是不包含有任何其他結構的字符流。通俗地說,就是文件中的字符與字符之間除了同屬於一個文件之外,不存在任何其他的關系。文件中字符的關系,是由使用文件的應用程序來建立和解釋的。

每一個文件都具有特定的屬性。Linux 系統的文件屬性比較復雜,主要包括文件類型和文件權限兩個方面。

1.文件類型

Linux下的文件可以分為5 種不同的類型。它們是普通文件、目錄文件、鏈接文件、設備文件和管道文件。下面給出它們的具體介紹。

(1)普通文件

普通文件也稱正規文件,是最常見的一類文件,也是最常使用到的一類文件。其特點是不包含有文件系統的結構信息。通常所接觸到的文件,包括圖形文件、數據文件、文檔文件、聲音文件等等都屬於普通文件。這種類型的文件按其內部結構又可細分為兩個文件類型:文本文件和二進制文件。

文本文件:文本文件是以字符(通常是ASCII 碼)表示的,是以行為基本結構的信息存儲方式。

二進制文件:二進制文件是按信息在內存中的格式表示的,它通常不能直接查看,而必須使用相應的軟件。

(2)目錄文件

目錄文件是用於存放文件名及其相關信息的文件。是內核組織文件系統的基本節點。目錄文件可以包含下一級目錄文件或普通文件。

注:在Linux 中,目錄文件是一種文件。但Linux 的目錄文件和其他操作系統中的“目錄”的概念不同,它是Linux 文件的一種。當然,在實際使用時也可以不仔細區分這兩種說法,甚至在本書的具體敘述中,有時就將目錄文件簡稱為目錄,但要注意它們在概念上的不同。

(3)鏈接文件

鏈接文件是一種特殊的文件。它實際上是指向一個真實存在的文件的鏈接。比如用戶要在一個目錄文件中使用其他目錄文件下的文件時,並不需要將其復制過來,而只需在此目錄中建立一個鏈接文件指向所要調用的文件。在具體使用時,並不會感覺到它們有什麼不同。根據鏈接對象的不同,鏈接文件又可以細分為硬鏈接文件和符號鏈接文件。

(4)設備文件

設備文件是Linux 中最特殊的文件。正是由於它的存在,使得Linux 系統可以十分方便的訪問外部設備。Linux 系統為外部設備提供一種標准接口,將外部設備視為一種特殊的文件。用戶可以像訪問普通文件一樣訪問外部設備。這就使Linux 系統可以很方便的適應不斷發展的外部設備。通常Linux 系統將設備文件放在/dev 目錄下。設備文件使用設備的主設備號和次設備號來指定某外部設備。主設備號用於說明設備類型,次設備號用於說明具體設備。例如,以IDE 硬盤為第一主盤,它的第三個分區的設備文件就是/dev/hda3。其中hd 是主設備號,a3 是次設備號。根據訪問數據方式的不同,設備文件又可以細分為兩種類型:塊設備文件和字符設備文件。

塊設備文件:塊設備文件是以固定長度的塊訪問數據的。

字符設備文件:字符設備文件是以指定字符(通常是一個字符)訪問數據的。

大多數外部設備都提供兩種訪問方式。但對每一種設備來說,都有其最佳的訪問方式。

注:在設備文件中有一個極其特殊的文件/dev/null。所有放入這一設備的數據都將不再存在。

可以將它看成是刪除操作。

(5)管道文件

管道文件也是一種很特殊的文件。主要用於不同進程間的信息傳遞。當兩個進程間需要進行數據或信息傳遞時,可以通過管道文件。一個進程將需傳遞的數據或信息寫入管道的一端,另一進程則從管道的另一端取得所需的數據或信息。通常管道是建立在高速緩存中的。采用先進先出的規定處理其中的數據。可以細分為有名管道和無名管道兩種。

2.文件權限

Linux系統是一個典型的多用戶系統,不同的用戶處於不同的地位。為了保護系統的安全性,Linux 系統對不同用戶訪問同一文件的權限做了不同的規定。對於一個Linux 系統中的文件來說,它的權限可以分為三種:讀的權限、寫的權限和執行的權限。分別用r、w 和x 表示。不同的用戶具有不同的讀、寫和執行權限。對於一個文件來說,它都有一個特定的所有者,也就是對文件具有所有權的用戶。同時,由於在Linux 系統中,用戶是按組分類的,一個用戶屬於一個或多個組。所以文件所有者以外的用戶又可以分為文件所有者的同組用戶和其他用戶。因此Linux 系統按文件所有者、文件所有者同組用戶和其他用戶三類規定不同的文件訪問權限。

注:系統管理員root 用戶是一個非常特別的用戶,此用戶對系統具有最高的控制權。對於系統中的所有文件root 用戶都有讀、寫以及執行的權限。

Copyright © Linux教程網 All Rights Reserved