Linux系统中一切皆文件,不同类型的文件在系统中承担着不同的功能,通过文件属性中的第一个字符可以快速区分各类文件。Linux的基本文件类型共有七种,各自的特点和用途如下。

1. 普通文件
普通文件是最常见的文件类型,用于存储文本、二进制数据、脚本等内容,文件属性第一个字符为-。普通文件又可以分为文本文件和二进制文件,文本文件可以直接用文本编辑器查看,二进制文件则需要对应的程序解析执行。
可以通过ls -l命令查看文件类型,示例如下:
# 查看当前目录下文件类型 ls -l # 输出示例:-rw-r--r-- 1 user user 1024 1月 1 10:00 test.txt # 第一个字符为-,说明test.txt是普通文件
2. 目录文件
目录文件用于存放其他文件和目录的索引信息,相当于Windows系统中的文件夹,文件属性第一个字符为d。目录文件本身不存储实际数据,只存储其包含的文件和子目录的名称、inode号等元数据信息。
# 查看目录文件示例 ls -ld /home # 输出示例:drwxr-xr-x 5 root root 4096 1月 1 10:00 /home # 第一个字符为d,说明/home是目录文件
3. 链接文件
链接文件分为软链接和硬链接两种,文件属性第一个字符为l的是软链接文件。软链接类似于Windows的快捷方式,指向另一个文件的路径;硬链接则是和原文件共享同一个inode号,相当于文件的另一个入口。
# 创建软链接并查看 ln -s test.txt test_link.txt ls -l test_link.txt # 输出示例:lrwxrwxrwx 1 user user 8 1月 1 10:00 test_link.txt -> test.txt # 第一个字符为l,说明是软链接文件
4. 块设备文件
块设备文件用于和块设备交互,比如硬盘、U盘等存储设备,文件属性第一个字符为b。块设备以数据块为单位进行读写,支持随机访问,系统通过块设备文件来操作对应的硬件存储设备。
# 查看块设备文件示例 ls -l /dev/sda # 输出示例:brw-rw---- 1 root disk 8, 0 1月 1 10:00 /dev/sda # 第一个字符为b,说明是块设备文件
5. 字符设备文件
字符设备文件用于和字符设备交互,比如键盘、鼠标、串口等,文件属性第一个字符为c。字符设备以字符为单位进行读写,通常是顺序访问,不支持随机跳转读取。
# 查看字符设备文件示例 ls -l /dev/tty # 输出示例:crw-rw-rw- 1 root tty 5, 0 1月 1 10:00 /dev/tty # 第一个字符为c,说明是字符设备文件
6. 管道文件
管道文件也叫FIFO文件,用于进程间的通信,文件属性第一个字符为p。管道文件的数据是单向流动的,一个进程写入数据,另一个进程读取数据,数据读取后就会被清除。
# 创建管道文件并查看 mkfifo test_pipe ls -l test_pipe # 输出示例:prw-r--r-- 1 user user 0 1月 1 10:00 test_pipe # 第一个字符为p,说明是管道文件
7. 套接字文件
套接字文件用于进程间的网络通信或者本地进程间通信,文件属性第一个字符为s。套接字文件可以让不同进程通过网络协议或者本地套接字进行数据交互,常见于服务进程和客户端进程的通信场景。
# 查看套接字文件示例 ls -l /var/run/docker.sock # 输出示例:srw-rw---- 1 root docker 0 1月 1 10:00 /var/run/docker.sock # 第一个字符为s,说明是套接字文件
文件类型快速区分表
可以通过下表快速对应文件属性和文件类型:
| 属性首字符 | 文件类型 | 主要用途 |
|---|---|---|
| - | 普通文件 | 存储文本、二进制数据等内容 |
| d | 目录文件 | 存放文件和目录的索引信息 |
| l | 软链接文件 | 指向其他文件的快捷方式 |
| b | 块设备文件 | 和硬盘等块存储设备交互 |
| c | 字符设备文件 | 和键盘等字符设备交互 |
| p | 管道文件 | 本地进程间单向通信 |
| s | 套接字文件 | 进程间网络通信或本地通信 |
除了通过ls -l命令查看文件属性首字符区分文件类型,还可以使用file命令直接识别文件类型,该命令会输出更详细的文件描述信息,适合快速判断不熟悉的文件的类型。
# 使用file命令查看文件类型 file test.txt # 输出示例:test.txt: ASCII text file /dev/sda # 输出示例:/dev/sda: block special
Linux文件类型block_devicecharacter_devicesocket修改时间:2026-07-04 12:03:26