7种文件类型+3种查看+文件属性+扩展名



一、七种文件类型:

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 -li
     69 -rw-r--r--. 2 root root  17 Dec  7 22:00 f2
     69 -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 f1
  File: ‘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 +0800
 Birth: -

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 f1
  File: ‘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 +0800
 Birth: -
[root@centos7 app]#echo "hello,i am JJJJJJJJJJ" > f1
[root@centos7 app]#stat f1
  File: ‘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 +0800
 Birth: -

可以看出,当直接在文件内增加内容时,修改时间(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 dir1
      71 -rw-r--r--. 1 root root  22 Dec  8 16:31 f1
      67 lrwxrwxrwx. 1 root root   2 Dec  7 21:57 f1_softlink -> f1
      69 -rw-r--r--. 2 root root  17 Dec  7 22:00 f2
      69 -rw-r--r--. 2 root root  17 Dec  7 22:00 f2_hardlink
      70 prw-r--r--. 1 root root   0 Dec  7 23:14 fifo_file
      68 -rw-r--r--. 1 root root 329 Nov 17 22:34 ls.log
 8388900 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限制文件的存储大小。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值