很多人以为 Linux 里的“文件”,就是:
但当你执行:
ls -l
看到最前面那一列:
-rw-r--r--drwxr-xr-xlrwxrwxrwx
第一个字符其实已经告诉你:
这不是普通文件。
今天,我们把 Linux 常见文件类型一次讲清楚。
---
一、如何判断文件类型?
执行:
ls -l
例如:
-rw-r--r--1 root root 1234 test.txtdrwxr-xr-x 2 root root 4096 mydirlrwxrwxrwx 1 root root 7 link -> test.txt
最左边的第一个字符,就是文件类型标志。
重点掌握前四种即可。
二、普通文件(-)
标志:
-
示例:
-rw-r--r-- test.txt
普通文件包括:
注意一点:
Linux 并不通过扩展名判断文件类型。
.sh、.txt、.log 在系统层面都是普通文件。
是否能执行,取决于:
查看真实类型可以用:
file 文件名
三、目录文件(d)
标志:
d
示例:
drwxr-xr-x mydir
目录本质上也是一种文件。
它里面存储的是:
目录权限含义特殊:
如果目录没有 x 权限,你甚至无法进入。
四、软链接(l)
标志:
l
示例:
lrwxrwxrwx link -> test.txt
软链接(symbolic link)类似于 Windows 的快捷方式。
创建方式:
ln -s 原文件 链接名
例如:
ln -s test.txt link
特点:
查看链接指向:
ls -l
会看到:
link -> test.txt
很多系统目录都使用软链接,例如:
/bin ->/usr/bin
五、硬链接(补充理解)
虽然 ls -l 不会显示为特殊类型,但值得说明。
创建方式:
ln 原文件 新文件
硬链接的特点:
可以通过查看 inode 发现:
ls -li
如果 inode 相同,就是硬链接。
六、设备文件(c / b)
这是很多新手最陌生的类型。
Linux 的设计理念:
一切皆文件
硬件设备,在 Linux 中也以文件形式存在。
常见位置:
/dev
查看:
ls -l /dev
会看到:
crw-rw----1 root tty ...brw-rw----1 root disk ...
类型:
c → 字符设备(character device)b → 块设备(block device)
区别:
字符设备:
块设备:
例如:
/dev/sda
就是一块硬盘设备。
这也是为什么可以:
cat /dev/zero
因为它是“文件”。
七、管道文件(p)
创建方式:
mkfifo mypipe
查看:
prw-r--r--
它用于进程间通信(IPC)。
一般在系统底层或服务程序中使用。
八、套接字文件(s)
常见于:
/var/run/
用于进程通信。
例如 MySQL 启动后会生成:
mysqld.sock
类型显示为:
srwxrwxrwx
九、如何快速判断文件类型?
方法一:
ls -l
看第一个字符。
方法二:
file 文件名
例如:
file test.sh
输出:
Bourne-Again shell script
方法三:
stat 文件名
可以看到更详细信息。
十、为什么理解文件类型很重要?
因为很多错误都和文件类型有关:
当你看到:
l
就知道是链接问题。
看到:
d
就知道是目录权限问题。
看到:
b
说明是块设备。
你开始“读得懂系统”。
十一、一句话总结
Linux 文件类型通过:
ls -l 最前面的第一个字符
来区分。
常见记住四种即可:
理解这一点,你就真正理解了:
Linux 为什么说“一切皆文件”。
文 / 零距技术仓记录每一次真实的折腾 (#^.^#)🚀 想看到更多实用折腾技巧?👉 先关注💬 评论区说说你的经历或想看的内容👍 点赞表示支持🔁 顺手分享给也在折腾的人,让大家都少踩坑 😎