1. 程式人生 > >Linux 文件系統 -- 簡述幾種文件類型

Linux 文件系統 -- 簡述幾種文件類型

block 不同的 保存 應用程序 遞歸 鼠標 第一個字符 http ali

  Linux 中一切皆為文件,文件類型也有多種,使用 ls -l 命令可以查看文件的屬性,所顯示結果的第一列的第一個字符用來表明該文件的文件類型,如下:

技術分享圖片

1、普通文件

  使用 ls -l 命令後,第一列第一個字符為 "-" 的文件為普通文件,如上圖所示,普通文件一般為灰色字體,綠色字體的是可執行文件,紅色字體的是壓縮文件。

文件的權限:

  以普通文件為例,使用 ls -l 命令,可以看到結果的第一列是 -rwxrwxrwx 的形式,其中第一個字符 "-" 表示這個文件為普通文件,它也可以是其他的字符,不同的字符代表不同類型的文件。其後的一串字符表明了該文件的權限,其中:

1)r 表明該文件具有可讀權限,若該位置為 "-" ,則表明文件不可讀;

2)w 表明該文件具有寫權限,若該位置為 "-" ,則表明文件不可寫;

3)x 表明該文件具有可執行權限,若該位置為 "-" ,則表明文件不具有可執行權限;

4)第一個 rwx 表示該文件的所有者對該文件的權限;第二個 rwx 表示該文件所屬組對該文件的權限;第三個 rwx 表示其他用戶對該文件的權限。

創建一個普通文件:

  可以使用 touch 命令來創建一個文件:

touch newfile

刪除一個普通文件:

  可以使用 rm 命令來刪除一個文件:

rm newfile

2、目錄文件

  Linux 中的目錄也是文件,目錄文件中保存著該目錄下其他文件的 inode 號 和文件名等信息,目錄文件中的每個數據項都是指向某個文件 inode 號的鏈接,刪除文件名就等於刪除與之對應的鏈接。目錄文件的字體顏色是藍色,使用 ls -l 命令查看,第一個字符為"d"(directory)。

目錄文件的權限

1)r 表明該目錄文件具有可讀權限,即可以使用 ls 命令查看該目錄的存儲情況;

2)w 表明該目錄文件具有寫權限,即可以往該目錄下添加、修改、刪除文件;

3)x 表明該目錄文件具有可執行文件,即可以使用 cd 命令進入到該目錄下。

  可以使用 chmod 指令來改變文件的權限。

創建一個目錄:

  可以使用 mkdir 命令來創建一個目錄文件:

mkdir directory

刪除一個目錄:

  可以使用 rmdir 命令來刪除一個空目錄:

rmdir directory

  如果該目錄下有其他文件,則可以使用 rm -r 命令來遞歸刪除該目錄下的所有文件。需要註意的是,使用該命令將會刪除該目錄及目錄下的所有數據,過程不可逆,需要謹慎使用:

rm -r directory

3、鏈接文件

  鏈接文件一般指的是一個文件的軟連接(或符號鏈接),使用 ls -l 命令查看,第一個符號為 "l",文件名為淺藍色,如下:

技術分享圖片

  這裏,test_softlink 就是一個鏈接文件,從結果上還可以看到它是文件 test.txt 的軟鏈接,刪除原文件 test.txt 的話,對應的軟鏈接文件 test_softlink 也會消失。可以使用 ln 命令來創建一個文件的鏈接文件:

1)軟鏈接

  軟鏈接(又稱符號鏈接),使用 ln -s file file_softlink 命令可以創建一個文件的軟鏈接文件:

ln -s test.txt test_softlink

  軟鏈接相當於給原文件創建了一個快捷方式,如果刪除原文件,則對應的軟鏈接文件也會消失。

2)硬鏈接

  硬鏈接,相當於給原文件取了個別名,其實兩者是同一個文件,刪除二者中任何一個,另一個不會消失;對其中任何一個進行更改,另一個的內容也會隨之改變,因為這兩個本質上是同一個文件,只是名字不同。使用 ls -i 命令查看,可以發現硬鏈接的兩個文件的 inode 號是一樣的:

技術分享圖片

  同樣的,使用 ln 命令可以創建一個文件的硬鏈接:

ln test.txt test_hardlink

4、設備文件

  Linux 中的硬件設備如硬盤、鼠標等也都被表示為文件,即為設備文件。設備文件一般存放在 /dev/ 目錄下,文件名為黃色,如下:

技術分享圖片

  設備文件分兩種:

1)塊設備文件:

  塊設備文件支持以塊(block)為單位的訪問方式。在 EXT4 文件系統中,一個 block 通常為 4KB 的大小,也就是說每次可以存取 4096(或其整數倍) 個字節的數據。應用程序可以隨機訪問塊設備文件的數據,程序可以自行確定數據的位置,硬盤、軟盤等都是塊設備。使用 ls -l 命令查看,塊設備文件的第一個字符是 "b"(block)。

2)字符設備文件:

  字符設備文件以字節流的方式進行訪問,由字符設備驅動程序來實現這種特性,這通常要用到 open、close、read、write 等系統調用。字符終端、串口和鍵盤等就是字符設備。另外,由於字符設備文件是以文件流的方式進行訪問的,因此可以順序讀取,但通常不支持隨機存取。使用 ls -l 命令查看,字符設備文件的第一個字符是 "c"(char)。

5、管道文件(FIFO文件)

  管道文件主要用於進程間通信,使用 ls -l 命令查看,第一個字符為 "p"(pipe)。可以使用 mkfifo 命令來創建一個管道文件:

mkfifo fifo_file

技術分享圖片

  在 FIFO 中可以很好地解決在無關進程間數據交換的要求,FIFO 的通信方式類似於在進程中使用文件來傳輸數據,只不過 FIFO 類型的文件同時具有管道的特性,在讀取數據時,FIFO 管道中同時清除數據。

Linux 文件系統 -- 簡述幾種文件類型