?
Linux 通过 inode 中的文件类型字段(file type) 来区分文件,而不是通过后缀名。
类型的本质
1️⃣ inode 是关键
每个文件在 Linux 中都有一个 inode,其中记录了:
👉 “一切皆文件”的前提,是 inode 层面的统一抽象
主要支持的文件类型
🔹 1. 普通文件(regular file)
符号:-
ls -l-rw-r--r-- 1 root root 1234 a.txt
特点
🔹 2. 目录文件(directory)
符号:d
drwxr-xr-x 2 root root 4096 testdir
本质
🔹 3. 字符设备文件(character device)
符号:c
crw-rw---- 1 root tty 5, 0 /dev/tty
特点
🔹 4. 块设备文件(block device)
符号:b
brw-rw---- 1 root disk 8, 0 /dev/sda
特点
🔹 5. 符号链接(symbolic link)
符号:l
lrwxrwxrwx 1 root root 7 bin -> usr/bin
特点
🔹 6. 管道文件(FIFO / named pipe)
符号:p
prw-r--r-- 1 root root 0 mypipemkfifo mypipe
特点
🔹 7. 套接字文件(socket)
符号:s
srwxr-xr-x 1 mysql mysql 0 mysql.sock
特点
如何查看
✅ 方式 1:ls -l
ls -l filename
第一个字符即文件类型:
✅ 方式 2:stat
stat filename
输出示例:
File: a.txtType: regular file
👉 直接来自 inode 信息
✅ 方式 3:file
file a.txt
注意
为什么“设备也是文件”?
以 /dev/sda 为例
/dev/sda
👉 用户通过 read/write👉 内核转发给设备驱动👉 驱动操作硬件
Linux 的统一哲学
统一接口,简化模型
全部通过:
open()read()write()close()
👉 程序无需关心“对面是磁盘、键盘还是 socket”
总结
Linux 区分文件类型,靠 inode,不靠后缀名。
核心要点
- • 设备 / 管道 / socket 都是“特殊文件”
- • “一切皆文件”本质是 统一抽象 + 统一系统调用
—— 🔚 END OF ARTICLE 🔚 ——