003-Linux文件类型


前言

Linux 中一切皆为文件,文件类型也有多种。


一、Linux文件类型

Linux 中一切皆为文件,文件类型也有多种。通过ls -l命令可以查看文件属性信息,其中行首第一个字符即代表该文件的文件类型。

1、普通文件

使用ls -l命令后,第一列第一个字符为 “-” 的文件为普通文件,如下图所示,普通文件一般为灰色字体,绿色字体的是可执行文件,红色字体的是压缩文件。我这里的压缩文件不是红色,应该是shell工具的原因。

在这里插入图片描述

2、目录文件

Linux 中的目录也是文件,目录文件中保存着该目录下其他文件的inode号和文件名等信息,目录文件中的每个数据项都是指向某个文件inode号的链接,删除文件名就等于删除与之对应的链接。目录文件的字体颜色是蓝色,使用 ls -l 命令查看,第一个字符为"d"(directory)。

例子1:查看目录文件中的内容,有一下内容。

在这里插入图片描述

删除abc文件。

在这里插入图片描述

再次查看目录文件,发现abc已经被删除。

在这里插入图片描述

例子2:目录文件中保存着该目录下其他文件的inode
目前还不知道怎么查看目录文件中保存的inode号,有知道的可以评论区告诉我一下。

3、设备文件

Linux 中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。设备文件一般存放在/dev/目录下,文件名为黄色。设备文件分为以下两种:

在这里插入图片描述

3.1、块设备文件

块设备文件支持以块(block)为单位的访问方式。在 EXT4 文件系统中,一个 block 通常为 4KB 的大小,也就是说每次可以存取 4096(或其整数倍) 个字节的数据。应用程序可以随机访问块设备文件的数据,程序可以自行确定数据的位置,硬盘、软盘等都是块设备。使用 ls -l 命令查看,块设备文件的第一个字符是 “b”(block)。

3.1、字符设备文件

字符设备文件以字节流的方式进行访问,由字符设备驱动程序来实现这种特性,这通常要用到 open、close、read、write 等系统调用。字符终端、串口和键盘等就是字符设备。另外,由于字符设备文件是以文件流的方式进行访问的,因此可以顺序读取,但通常不支持随机存取。使用 ls -l 命令查看,字符设备文件的第一个字符是 “c”(char)。

4、链接文件

链接文件一般指的是一个文件的软连接(或符号链接),使用 ls -l 命令查看,第一个符号为 “l”,文件名为浅蓝色。下图中,yum 就是一个链接文件,从结果上还可以看到它是文件 dnf-3 的软链接,删除原文件 dnf-3的话,对应的软链接文件 yum 也会消失。可以使用 ln 命令来创建一个文件的链接文件。

在这里插入图片描述

4.1、软链接

软链接(又称符号链接),使用 ln -s file file_softlink 命令可以创建一个文件的软链接文件:

比如上图中的yum链接:ln -s dnf-3 yum

软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。两个文件的inode号是不一样的。

在这里插入图片描述

4.2、硬链接

硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。使用 ls -i 命令查看,可以发现硬链接的两个文件的 inode 号是一样的:

同样的,使用 ln 命令可以创建一个文件的硬链接:ln test.txt test_hardlink

在这里插入图片描述

注意区分硬链接文件和普通文件

硬链接文件和普通文件的第一个字符都是"-",只能通过inode号来区分,硬链接文件共用一个inode号,普通文件独用一个inode号。

5、管道文件

管道文件主要用于进程间通信,使用 ls -l 命令查看,第一个字符为 “p”(pipe)。可以使用 mkfifo 命令来创建一个管道文件,管道文件必须通过open()、read()、write()、close()

可以参考“王摆摆摆”博主的文章:Linux 下有名(命名)管道文件读写操作

在 FIFO(一种先进先出的数据缓存器) 中可以很好地解决在无关进程间数据交换的要求,FIFO 的通信方式类似于在进程中使用文件来传输数据,只不过 FIFO 类型的文件同时具有管道的特性,在读取数据时,FIFO 管道中同时清除数据。
  在这里插入图片描述

6、套接字文件

套接字文件主要用于通信,特别是在网络上。使用 ls -l 命令查看,第一个字符为 “s”(socket)。

在这里插入图片描述


总结

本文主要对Linux的文件类型进行总结,包括不同类型文件的区分方式、作用。总共有7种文件类型:普通文件(“-”)、目录文件(“d”)、块设备文件(“b”)、字符设备文件(“c”)、链接文件(“l”)、管道文件(“p”)、套接字文件(“s”)。

  • 29
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于齐龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值