2.15 Linux中一切皆檔案[包含優缺點]
Linux 中所有內容都是以檔案的形式儲存和管理的,即一切皆檔案,普通檔案是檔案,目錄(Windows 下稱為資料夾)是檔案,硬體裝置(鍵盤、監視器、硬碟、印表機)是檔案,就連套接字(socket)、網路通訊等資源也都是檔案。
Linux系統中,檔案具體可分為以下幾種型別:
1) 普通檔案
類似 mp4、pdf、html 這樣,可直接拿來使用的檔案都屬於普通檔案,Linux 使用者根據訪問許可權的不同可以對這些檔案進行檢視、刪除以及更改操作。
2) 目錄檔案
對於用慣 Windows 系統的使用者來說,目錄是檔案可能不太好理解。
Linux 系統中,目錄檔案包含了此目錄中各個檔案的檔名以及指向這些檔案的指標,開啟目錄等同於開啟目錄檔案,只要你有許可權,可以隨意訪問目錄中的任何檔案。
注意,目錄檔案的訪問許可權,同普通檔案的執行許可權,是一個意思。
3) 字元裝置檔案和塊裝置檔案
這些檔案通常隱藏在 /dev/ 目錄下,當進行裝置讀取或外設互動時才會被使用。
例如,磁碟光碟機屬於塊裝置檔案,串列埠裝置則屬於字元裝置檔案。
Linux 系統中的所有裝置,要麼是塊裝置檔案,要麼是字元裝置檔案。
4) 套接字檔案(socket)
套接字檔案一般隱藏在 /var/run/ 目錄下,用於程序間的網路通訊。
5) 符號連結檔案(symbolic link)
類似與 Windows 中的快捷方式,是指向另一檔案的簡介指標(也就是軟連結)。
6) 管道檔案(pipe)
主要用於程序間通訊。例如,使用 mkfifo 命令建立一個 FIFO 檔案,與此同時,啟用程序 A 從 FIFO檔案讀資料,啟用程序 B 從 FIFO檔案中寫資料,隨寫隨讀。
一切皆檔案的利弊
和 Windows 系統不同,Linux 系統沒有 C 盤、D 盤、E 盤那麼多的碟符,只有一個根目錄(/),所有的檔案(資源)都儲存在以根目錄(/)為樹根的樹形目錄結構中。
這樣做最明顯的好處是,開發者僅需要使用一套 API 和開發工具即可調取 Linux 系統中絕大部分的資源。舉個簡單的例子,Linux 中幾乎所有讀(讀檔案,讀系統狀態,讀 socket,讀 PIPE)的操作都可以用 read 函式來進行;幾乎所有更改(更改檔案,更改系統引數,寫 socket,寫 PIPE)的操作都可以用 write 函式來進行。
不利之處在於,使用任何硬體裝置都必須與根目錄下某一目錄執行掛載操作,否則無法使用。我們知道,本身 Linux 具有一個以根目錄為樹根的檔案目錄結構,每個裝置也同樣如此,它們是相互獨立的。如果我們想通過 Linux 上的根目錄找到裝置檔案的目錄結構,就必須將這兩個檔案系統目錄合二為一,這就是掛載的真正含義。
有關 Linux 掛載的具體知識,後續文章將會詳細介紹。