文章目录

  • 一、七种文件类型:
    • 1. 普通文件(-)
    • 2. 目录文件类型(d)
    • 3.块设备文件类型(b)
    • 4.字符设备类型(c)
    • 5.链接文件类型(l)
    • 6.管道文件类型(p)
    • 7.套接字文件类型(s)
  • 二、查看文件类型的三种方法
  • 三、文件扩展名
  • 四、文件属性

一、七种文件类型:

Linux 的哲学思想,一切皆为文件(包括硬件)。
文件类型也有多种。可以通过ls -l或者ll命令可以查看文件属性信息。
可以看到结果的第一列是drwxr-xr-x. 的形式。其中行首第一个字符即代表该文件的文件类型。

共有十位字符,第一位字符是文件的类型,如"d"
剩余的九位为文件的权限。

linux中有七种文件类型:
1、普通文件类型(-)
2、目录文件类型(d)
3、块设备文件类型(b)
4、字符设备类型(c)
5、链接文件类型(l)
6、管道文件类型(p)
7、套接字文件类型(s)

1. 普通文件(-)

最常使用的一类文件,通常所接触到的文件,如图形文件、数据文件、文本文件以及声音文件都属于这种普通文件。

另外,依照文件的内容,又可以分为两种:

纯文字文件(ASCII) :这是 Unix 系统中最多的一种文字编码。纯文本文件,是可以直接读到的数据,例如数字、字母等等。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。

二进制文件(binary) :经过编译后得到的可执行文件,或者通常执行的常规命令,如 /bin的cd、cat,cp等等,就是一个二进制文件;

其实不管存放的是文字编码,还是二进制文件,在计算机中存储时,都是以二进制形式存放的,只不过人为的把机器码非文字编码的数据,特意强调为了二进制数据。

使用 ls -l 或者ll命令后,第一列第一个字符为"-" 的文件为普通文件

普通文件一般为灰色或白色字体,可执行文件绿色字体,压缩文件、rpm包红色字体。

2. 目录文件类型(d)

在Linux中,目录文件是一种文件,用于存放文件以及其相关信息的文件,目录文件可以包含下一级文件目录或者普通文件,可以用 cd 命令进入的。类似于window的文件夹。

使用 ls -l 或者ll命令查看,第一个字符为"d"(directory)

目录文件的蓝色字体

Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。

每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。

3.块设备文件类型(b)

块设备文件就是存储数据以供系统存取的接口设备,一般指硬盘、光驱等存储设备。块设备文件,是块设备驱动程序在上层的表现形式。

块设备文件支持以块(block)为单位的访问方式。在 EXT4 文件系统中,一个 block 通常为 4KB 的大小。应用程序可以随机访问块设备文件的数据,程序可以自行确定数据的位置,硬盘、光驱等块设备。

使用 ls -l 或者ll命令后,块设备文件的第一个字符是 “b”(block)

块设备文件黄色字体

4.字符设备类型(c)

字符(character)设备文件:即是一些串行端口的接口设备, 例如键盘、鼠标、字符终端等。这些设备的特色就是一次性读取的,不能够截断输出。

字符设备文件以字节流的方式进行访问,因此可以顺序读取,但通常不支持随机存取。由字符设备驱动程序来实现这种特性,这通常要用到 open、close、read、write 等系统调用。

字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。

使用ll /dev命令查看,字符设备文件的第一个字符是 “c”(character)。

字符设备文件黄色字体

块设备与字符设备区别
(a)字符设备
以字节为单位来操作数据。
比如:键盘、鼠标、显示器等,都是字符设备。
字符设备的驱动程序,就称为“字符设备驱动程序”。
(b)块设备
以块为单位来操作数据。
比如:硬盘、移动硬盘、u盘等,都是块设备。
块设备的驱动程序,就称为“块设备驱动程序"。

5.链接文件类型(l)

链接文件一般指的是一个文件的软连接(或符号链接)。当查看文件属性时,第一个字符是"l",这类文件是软链接文件。这是一种特殊文件,指向一个真实存在的文件链接(也有大小),类似于Windows下的快捷方式。

使用 ls -l 或者ll命令后,字符设备文件的第一个字符是 “l”(link)。

链接文件的不同,又可分为硬链接文件和软链接文件(符号链接文件)。

>软链接(l)
软链接(又称符号链接)相当于给原文件创建了一个快捷方式。
使用 ln -s 原文件名 软链接文件名字 命令可以创建一个文件的软链接文件:

[root@centos7 app]#ln -s f1 f1_softlink
[root@centos7 app]#ll
-rwxrwxrwx. 1 root root   0 Nov 30 16:34 f1
lrwxrwxrwx. 1 root root   2 Dec  7 21:53 f1_link -> f1

如果删除原文件,则对应的软链接文件会变成红色闪烁。再创建原文件名,恢复正常。

软链接(符号链接)是一种特殊的文件,它的内容是指向另一个文件的路径。当对软链接(符号链接)进行操作时,系统根据情况会对这个操作转移到它所指向的文件上去,而不是对它本身进行操作。
例如,读一个符号链接时,实际读到的是它所指向的文件的内容。

字符设备文件浅青色字体

>硬链接(-)
硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。

使用 ln 原文件名 硬链接文件名字 命令可以创建一个文件的硬链接文件:
使用ls -li命令查看,可以发现硬链接的两个文件的 inode 号是一样的:

[root@centos7 app]#ln f2 f2_hardlink
[root@centos7 app]#ll
-rw-r--r--. 2 root root   0 Dec  7 21:58 f2
-rw-r--r--. 2 root root   0 Dec  7 21:58 f2_hardlink
[root@centos7 app]#ls -li69 -rw-r--r--. 2 root root  17 Dec  7 22:00 f269 -rw-r--r--. 2 root root  17 Dec  7 22:00 f2_hardlink

inode号是用来存储这些数据的属性的,具备唯一性,如相同就证明是同一个文件,只不过有两个名字。

6.管道文件类型(p)

管道文件是Unix/Linux中较特殊的文件类型,多用于进程间通信。
当两个进程需要进行数据或者信息传递时,可以使用通道文件,一个进程将需要传递的数据或者信息写入管道的一端,另一进程从管道的另一端取得所需要的数据或者信息,通常管道是建立在调整缓存中。

使用 ls -l 或者ll命令后,块设备文件的第一个字符是 “p”(pipe)。
可以使用 mkfifo 命令来创建一个管道文件:

[root@centos7 app]#mkfifo fifo_file
[root@centos7 app]#ll
prw-r--r--. 1 root root   0 Dec  7 23:14 fifo_file

代码层面的通信机制。
一个进程写一些数据到管道中,这些数据就可以被另一个进程从这个管道中读取。
数据 \quad \quad \quad \quad \quad \quad \quad \quad ———> \quad \quad \quad \quad \quad \quad 数据
进程A ————————> 管道文件 ————————>进程B

管道可以分为两种类型:无名管道与命名管道。

无名管道由进程在使用时创建,读写结束关闭文件后消失。之所以成为无名管道,是因为它们并不存在于文件系统中,没有文件名称。

命名管道在形式上就是文件系统中的一个文件,虽然并不占用存储文件内容的磁盘空间,但有自己的文件名。命名管道通常称为FIFO。

管道设备文件黄色字体

7.套接字文件类型(s)

套接字文件(sockets),是一种进程间通信的方式。与管道不同的是,它可以在不同主机上的进程间通信,实际上就是专门用于网络通信的文件。

这种类型的文件通常被用在网络上的数据承接。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个socket来进行数据的沟通。

通常在/var/run这个目录中看到这种文件类型。
使用 ls -l 或者ll命令后,块设备文件的第一个字符是 “s”(sockets)。

[root@centos7 app]#ls -l /run/systemd/notify
srwxrwxrwx. 1 root root 0 Oct 24 22:23 /run/systemd/notify

socket在Linux系统上也是以文件的方式进行操作的。

套接字文件文件紫色字体

二、查看文件类型的三种方法

  1. ls -l或者ll 查看,或者ll 路径文件名,看首个字符。
[root@centos7 app]#ls -l
-rw-r--r--. 1 root root   0 Dec  7 23:16 f1
lrwxrwxrwx. 1 root root   2 Dec  7 21:57 f1_softlink -> f1
[root@centos7 app]#ls -l /app
-rw-r--r--. 1 root root   0 Dec  7 23:16 f1
lrwxrwxrwx. 1 root root   2 Dec  7 21:57 f1_softlink -> f1

ll -i 增加显示inode信息

[root@centos7 app]#ll -i f2
69 -rw-r--r--. 2 root root 17 Dec  7 22:00 f2
  1. file 命令可以查看文件类型 file 文件名
[root@centos7 app]#file f1
f1: ASCII text
[root@centos7 app]#file f1_softlink
f1_softlink: symbolic link to `f1'
[root@centos7 app]#file fifo_file
fifo_file: fifo (named pipe)
[root@centos7 app]#file f2_hardlink
f2_hardlink: ASCII text
[root@centos7 app]#file dir1/
dir1/: directory
  1. stat命令用于显示文件的状态信息。
[root@centos7 app]#stat f1File: ‘f1’Size: 20            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d  Inode: 71          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2022-12-08 13:52:33.055842780 +0800
Modify: 2022-12-08 13:52:29.225842597 +0800
Change: 2022-12-08 13:52:29.225842597 +0800Birth: -

File:文件名
Size:文件大小
Blocks:文件使用的数据块总数
IO Block:IO块大小
Device:设备编号
Inode:Inode号
Links:硬链接数
Access:文件的权限
Uid、Gid:文件所有权的Uid和Gid
Access time:表示最后一次访问文件的时间;atime(仅仅是访问,没有改动)。
Modify time:表示最后一次修改文件的时间:mtime(改变文件内容-数据)
Change time:表示最后一次对文件(属性)更改的时间,包括权限,大小,属性等等(元数据发生更改)

三个时间

[root@centos7 app]#ll f1
-rw-r--r--. 1 root root 20 Dec  8 13:52 f1
[root@centos7 app]#stat f1File: ‘f1’Size: 20           Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d  Inode: 71          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2022-12-08 13:52:33.055842780 +0800
Modify: 2022-12-08 13:52:29.225842597 +0800
Change: 2022-12-08 13:52:29.225842597 +0800Birth: -
[root@centos7 app]#echo "hello,i am JJJJJJJJJJ" > f1
[root@centos7 app]#stat f1File: ‘f1’Size: 22           Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d  Inode: 71          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2022-12-08 13:52:33.055842780 +0800
Modify: 2022-12-08 16:31:44.372298222 +0800
Change: 2022-12-08 16:31:44.372298222 +0800Birth: -

可以看出,当直接在文件内增加内容时,修改时间(Modify)和改变时间(Change)都会变化,但是没有访问,所以就没有变化。
ll直接列出的是修改时间

三、文件扩展名

linux里文件扩展名和文件类型没有关系。文件能不能被执行,与执行权限(x)有关,与文件名无关。但为了容易区分和兼容用户使用windows的习惯,还是会用扩展名来表示文件类型。

简单来说,文件f1、 f1.txt、f1.sh是没有本质区别的。

举例:
● .a (archive): 静态库,是多个.o合在一起,用于静态连接。
● .c : C语言文件。
● .tar、r.gz、.tgz、.zip、表示压缩文件。
● .sh 表示shell脚本文件,通过shell语言开发的程序。
● .so (shared object) :共享库。
● .o (object) : 目标文件。
● .pl 表示perl语言文件,通过perl语言开发的程序。
● .py 表示python语言文件,通过python语言开发的程序。
● .html、.htm、.php、.jsp、.do表示网页语言的文件。
● .conf 表示系统服务的配置文件。
● .rpm 表示rpm安装包文件。

四、文件属性

[root@centos7 app]#ls -lhi
total 16K
16797984 drwxr-xr-x. 2 root root   6 Dec  8 13:53 dir171 -rw-r--r--. 1 root root  22 Dec  8 16:31 f167 lrwxrwxrwx. 1 root root   2 Dec  7 21:57 f1_softlink -> f169 -rw-r--r--. 2 root root  17 Dec  7 22:00 f269 -rw-r--r--. 2 root root  17 Dec  7 22:00 f2_hardlink70 prw-r--r--. 1 root root   0 Dec  7 23:14 fifo_file68 -rw-r--r--. 1 root root 329 Nov 17 22:34 ls.log8388900 drwx------. 3 tom  tom   78 Nov 20 18:24 tomhome

1.代表这这个文件的节点号(inode)。
2.代表文件的类型和权限。drwxr-xr-x共有十位.
\quad ● 第一位代表文件类型(d、-)
\quad ● 第二、三、四代表所属用户的权限。(user)
\quad ● 第五、六、七代表所属组的权限。(group)
\quad ● 第八、九、十代表其他的权限。(other)
3.代表文件的硬链接数,连接数是1,就是他本身。
4.代表文件的所属用户,这里有root、tom用户。
5.代表文件的所属用户组,这里有root、tom用户组。
6.代表文件的大小,是字节。
7.代表文件的修改时间,是该文件最后被更新(包括文件创建、内容更新、文件名更新等)的时间。
8.代表文件或目录名称。

block是用来存储实际数据用的,例如:文本、视频等普通文件数据。
inode是用来存储这些数据的属性的(元数据)。

---------------------------------------------------------------------------
inode限制了文件的存储数量,block限制文件的存储大小。

7种文件类型+3种查看+文件属性+扩展名相关推荐

  1. Linux系统的7种文件类型

    目录 1. 普通文件 2. 目录文件 3. 设备文件 3.1 块设备文件: 3.2 字符设备文件: 4. 链接文件 5. 管道文件 6. 套接字文件 Linux 中一切皆为文件,文件类型也有多种.通过 ...

  2. LINUX中的七种文件类型

    在liunx下一切皆文件. LINUX中的七种文件类型 d 目录文件. l 符号链接(指向另一个文件,类似于window下的快捷方式): s 套接字文件: b 块设备文件,二进制文件: c 字符设备文 ...

  3. linux:7种文件类型

    环境: centos7.6 ubuntu 参照:<Linux系统的7种文件类型> 1. 普通文件(-) 就是正常的文件喽,比如:一个文本.电影.音乐等等. 使用 ls -l 命令后,第一列 ...

  4. linux系统的5种文件类型及其属性符号

    linux系统的5种文件类型及其属性符号 Linux文件类型常见的有: (1)普通文件:符号是 -  (2)目录文件:符号是 d (3)字符设备文件:符号是c (4)块设备文件:符号是b (5)符号链 ...

  5. 【Linux】七种文件类型

    Linux中的七种文件类型 d 目录文件. l 符号链接(指向另一个文件). s 套接字文件. b 块设备文件,二进制文件. c 字符设备文件. p 命名管道文件. - 普通文件

  6. Linux的7种文件类型

    Linux的7种文件类型 Linux的7种文件类型 d目录文件 f文件 b块设备 c串口设备 l链接文件 p进程文件 s套接字文件 Linux的7种文件类型 参考链接:https://www.cnbl ...

  7. Linux 7 种文件类型

    Linux 7 种文件类型 Linux一切皆文件,文件一共分为7类分别是- d c s p l b 文件管理 普通文件(regular file:-) a)文本文件存放的都是文字编码,文本编辑器打开后 ...

  8. 杂项-镜像:镜像(一种文件类型)

    ylbtech-杂项-镜像:镜像(一种文件类型) 镜像(Mirroring)是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像. 镜像是一种文件存储形式,可以把许多文件做成 ...

  9. Linux七种文件类型

    Linux七种文件类型 实,在磁盘上存储 - 普通文件 touch d 目录文件 mkdir l 软连接文件 ln -s 虚,不在磁盘上存储 c 字符设备文件 b 块设备文件 p 管道文件 mkfif ...

最新文章

  1. AOP动态代理的实现机制
  2. 服务器中加速BIOS启动的方法
  3. 转载:有关SQL server connection Keep Alive 的FAQ(3)
  4. 《系统集成项目管理工程师》必背100个知识点-30工作分解结构(WBS)分解形式
  5. K for the Price of One(EASY HARD)
  6. texture 纹理(贴图)
  7. C语言课后习题(48)
  8. php升级语言,PHP是最好的语言,PHP 8.0带来了重大更新
  9. java面试下_Java面试宝典(下)
  10. 部署系统到linux服务器,若依管理系统部署到linux(上)
  11. 势差、高度、结构、做工、逆熵
  12. python 逻辑回归 复杂抽样_如何用Python进行抽样?
  13. 获取全年所有非工作日和工作日的脚本(Python篇)
  14. 离散数学:快速又准确地求解主合取范式和主析取范式 (配凑大法好)
  15. 非平衡电桥电阻计算_非平衡电桥的原理和应用 - 范文中心
  16. 查询最后一次消费记录
  17. c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
  18. 2021-11-12号-java面试题-北京
  19. Python: 向量、矩阵和多维数组(基于NumPy库)
  20. 交友项目【手机号登录注册功能】实现

热门文章

  1. Python中Mysql数据库的sql语句参数传递问题
  2. 写作技巧:如何在word里优雅的插入代码
  3. 基于S2SH开发大学毕业生就业信息管理系统+开题报告+论文+PPT 毕业设计
  4. 云原生最佳实践之二-37手游云原生落地实践
  5. OpenCV中的imshow函数深度剖析
  6. hadoop组件之hive的安装配置
  7. Bingle - 移动应用着陆页HTML模板
  8. DatePicker日期选择器
  9. JS中4种常见的内存泄漏
  10. Python-pptx Placeholders