linux中什么是文件
1、linux中所有內(nèi)容都是以文件的形式保存和管理,即:一切皆文件。
普通文件是文件。
目錄(在win下稱為文件夾)是文件。
硬件設(shè)備(鍵盤、硬盤、打印機(jī))是文件。
套接字(socket)、網(wǎng)絡(luò)通信等資源也都是文件。
2、文件類型:
1) 普通文件
類似 mp4、jgp、html這樣,可直接拿來使用的文件都屬于普通文件。
2) 目錄文件
習(xí)慣win系統(tǒng)的用戶來說,目錄是文件可能不太好接受。
Linux系統(tǒng)中,目錄文件包含了此目錄中各個(gè)文件的文件名以及指向這些文件的指針,打開目錄等同于打開目錄文件。
即:只要有權(quán)限,可以隨意訪問目錄中的任何文件。
vim 目錄名
3) 字符設(shè)備文件和塊設(shè)備文件
通常隱藏在/dev/目錄下,當(dāng)進(jìn)行設(shè)備讀取或外設(shè)交互時(shí)才會(huì)被使用。
例如:磁盤光驅(qū)屬于塊設(shè)備文件,串口設(shè)備則屬于字符設(shè)備文件。
4) 套接字文件(socket)
套接字文件一般隱藏在 /var/run/目錄下,用于進(jìn)程間的網(wǎng)絡(luò)通信。
5) 符號(hào)鏈接文件(symbolic link)
類似與win中的快捷方式,是指向另一文件的指針(軟鏈接)。
6) 管道文件(pipe)
主要用于進(jìn)程間通信。
例如:使用mkfifo命令創(chuàng)建一個(gè)FIFO文件,與此同時(shí)啟用進(jìn)程A從FIFO文件讀數(shù)據(jù),啟用進(jìn)程B從FIFO文件中寫數(shù)據(jù),隨寫隨讀。
3、一切皆文件的利弊:
與windows 系統(tǒng)不同,Linux 系統(tǒng)沒有C盤、D盤、E盤那么多的盤符,只有一個(gè)根目錄(/),所有的文件(資源)都存儲(chǔ)在以根目錄(/)為樹根的樹形目錄結(jié)構(gòu)中。
(1)這樣做最明顯的好處是,開發(fā)者僅需要使用一套 API 和開發(fā)工具即可調(diào)取 Linux 系統(tǒng)中絕大部分的資源。舉
個(gè)簡單的例子,Linux 中幾乎所有讀(讀文件,讀系統(tǒng)狀態(tài),讀 socket,讀PIPE)的操作都可以用read函數(shù)來進(jìn)行;幾乎所有更改(更改文件,更改系統(tǒng)參數(shù),寫 socket,寫 PIPE)的操作都可以用write函數(shù)來進(jìn)行。
(2)不利之處在于,使用任何硬件設(shè)備都必須與根目錄下某一目錄執(zhí)行掛載操作,否則無法使用。我們知道,本身Linux具有一個(gè)以根目錄為樹根的文件目錄結(jié)構(gòu),每個(gè)設(shè)備也同樣如此,它們是相互獨(dú)立的。如果我們想通過Linux上的根目錄找到設(shè)備文件的目錄結(jié)構(gòu),就必須將這兩個(gè)文件系統(tǒng)目錄合二為一,這就是掛載的真正含義。