为何linux一切皆文件
1 引言
· 本文作为linux文件的基础介绍,是linux文件系列的开篇,主要面向想深入学习linux的小伙伴,最后的延伸学习部分给出了学习建议。
· 首先开门见山,给出结论:因为linux将文件作为一切可用资源的使用接口.“一切资源”包括内存、磁盘、其他各种设备、进程间的通信,还有网络通信。这是一种简化的思想,把一切资源都简化为文件展示出来,将这些对资源的操作简化为对文件的操作。
· 下面探究这个结论如何得出:
2.文件类型
通过linux文件有如下几种类型,在Linux下可用ls –al来查看:
文件描述符 | 解释 |
---|---|
-rw-r—r— | 指明了该文件是一个普通文件,以”-“开头的都是普通文件,而以”d”开头的是目录文件 |
brw-rw---- | 指明了/dev/sda1是一个块设备(Block Device)文件。以”b”开头的文件都是块设备文件。 |
crw-rw---- | 指明了/dev/ttyS0是一个字符设备(Chartacter Device)文件,以”c”开头的文件都是字符设备文件。 |
srwxrwxrwx | 指明了这是一个socket文件。以””开头的文件都是指明了socket文件。 |
prwxr—r– | 指明了了该文件是一个管道文件。管道文件的一个属性是”p”。 |
lrwxrwxrwx | 指明了该文件是一个软链接文件(或称符号链接文件),该文件指向了另一个文件。以”l”开头的文件是软链接文件。 |
-rw-r—r— | 该文件看上去是个普通文件,但它实际上是一个硬链接文件。 |
-rwsr-xr-x | 指明了该文件是一个setUid可执行文件,这是根据第四个字符”s”判断的。 |
-rwxr-sr-x | 指明了该文件是一个setGid可执行文件,这是根据第七个字符中的”s”判断的。 |
上述文件中,普通文件和硬链接文件并无什么区别,软连接文件只是指向了一个普通文件,所以把这些都认为是普通文件了;而块设备文件和字符设备文件统称为设备文件;socket文件和管道文件都是用作进程间通信的,只不过socket文件可以用在不同系统间的两个进程来通信,统称为通信文件。而最后两个是可以影响用户执行权限的文件,只是在普通文件上做了标记,这里不做深究,想了解的见 Linux 文件特殊权限详解[suid/sgid/t]。
3.文件解析图
· 这里将文件的操作简化成一个图来描述: