在Windows系统下,操作系统识别文件类型一般是通过文件名后缀判断,例如C语言头文件.h,源文件.c等等,系统会首先识别出文件类型之后由相关的程序去调用。
在Linux系统下,并不会通过文件后缀名来识别一个文件的类型。但是还是需要加后缀方便阅读。
Linux系统下文件共分为七种类型:普通文件,目录文件,字符设备文件,块设备文件,符号链接文件,管道文件,套接字文件。
一、普通文件
普通文件是Linux系统下最常见的文件。普通文件的数据存在系统磁盘中,可以以字节为单位进行存储访问。
普通文件可以分为:文本文件和二进制文件。
文本文件:顾名思义,文件内容是由文本构成的,所谓文本指的是ASCII码字符,常见的.c,.h.sh都是文本文件。
二进制文件:就是一系列的0和1,例如Linux下的可执行文件,C编译之后的.o文件等。
我们可以通过stat或者ls -l查看文件类型。
使用ls -l时可以看到出来的‘-’,这代表的是普通文件,其他文件类型使用的字符如下:
- | 普通文件 |
d | 目录文件 |
c | 字符设备文件 |
b | 块设备文件 |
l | 符号链接文件 |
s | 套接字文件 |
p | 管道文件 |
二、目录文件
目录就是文件夹,文件夹在Linux系统下也是文件。可以看到文件夹中存放了文件路径和文件夹下的文件。
三、字符设备文件和块设备文件
字符设备文件和块设备文件都是外接的硬件设备。在Linux系统下,硬件设备对应到一个设备文件,应用程序通过对设备文件的读写来操控设备。
虽然有字符设备文件和块设备文件,但是其并不会存放在硬盘中,而是存放在内存中,一旦断电,文件就会消失。
四、符号链接文件
类似于Windows系统下的快捷方式,当对其进行操作时,系统会对其指向的文件进行操作。
五、管道文件
管道文件主要用于进程通信。
六、套接字文件
套接字文件(socket)是一种进程间通信的方式,但是是不同主机之间进行通信。