简介
stat命令用来显示文件或文件系统的详细信息
命令格式
stat [OPTION]… FILE…
常用参数
-L |
支持符号链接 |
-f |
显示文件系统的信息,而不是有关文件本身的信息 |
-t |
以简洁的方式输出 |
-c |
以指定的格式显示文件信息 |
—printf |
格式化输出的信息,支持换行符和制表符 |
—help |
显示命令帮助信息 |
—version |
显示命令版本信息 |
state 输出的含义
File |
文件名称 |
Size |
文件的大小(以字节为单位) |
Blocks |
文件占用的已分配块数 |
IO Block |
每个块的大小(以字节为单位) |
File type |
例如常规文件,目录,符号链接… |
Device |
设备编号(十六进制和十进制) |
Inode |
索引节点编号 |
Links |
硬连接数 |
Access |
数字和符号方法中的文件权限 |
Uid |
所有者的用户ID和名称 |
Gid |
群组ID和所有者名称 |
Context |
SELinux安全上下文 |
Access |
上次访问文件的时间,当文件内容被访问时,更新这个时间 |
Modify |
上次修改文件内容的时间,当文件的数据内容被修改时,更新这个时间。 |
Change |
上次更改文件属性或内容的时间。当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数 |
stat -f 输出的含义
File |
|
文件名 |
ID |
|
十六进制文件系统ID |
Type |
|
文件系统类型 |
Block size |
|
block 块的大小 |
Fundamental block size |
|
文件系统上每个块大小 |
Blocks |
|
块信息 |
|
Total |
文件系统中的总块数 |
|
Free |
文件系统中可用的块数 |
|
Available |
非root用户可用的可用块数 |
Inodes |
|
inode 节点数 |
|
Total |
文件系统中的总索引节点数 |
|
Free |
文件系统中空闲索引节点的数量 |
自定义输出
stat命令有两个选项,可让您根据需要自定义输出:-c,(-format =”format”)和—printf =”format”。这两个选项的区别在于,
当两个或多个文件用作操作符时,—format在每个操作数的输出之后自动添加换行符。 —printf解释反斜杠转义。—format和—printf可以使用许多文件格式和文件系统的格式指令。
有效的文件格式
%a |
八进制权限 |
%A |
用可读性较好的方式输出权限 |
%b |
计算已分配块数(参见%B) |
%B |
以字节为单位输出%b 所报告的每个块的大小 |
%C |
SELinux 安全环境字符串 |
%d |
十进制设备编号 |
%D |
十六进制设备编号 |
%f |
十六进制原始模式 |
%F |
文件类型 |
%g |
文件的属组ID |
%G |
文件的属组组名 |
%h |
硬链接数量 |
%i |
Inode 编号 |
%m |
挂载点 |
%n |
文件名 |
%N |
如果对象是一个符号链接,显示引用到的其它文件名 |
%o |
I/O 块大小 |
%s |
总计大小,以字节为单位 |
%t |
十六进制主设备类型 |
%T |
十六进制子设备类型 |
%u |
文件的属主ID |
%U |
文件的属主用户名 |
%w |
文件创建时间,若未知则显示”-“ |
%W |
从UNIX 元年起以秒计的文件创建时间,若未知则显示”-“ |
%x |
上次访问时间 |
%X |
从UNIX 元年起以秒计的上次访问时间 |
%y |
上次修改时间 |
%Y |
从UNIX 元年起以秒计的上次修改时间 |
%z |
上次更改时间 |
%Z |
从UNIX 元年起以秒计的上次更改时间 |
有效的文件系统格式
%a |
非超级用户可用的剩余块数 |
%b |
文件系统的总数据块数 |
%c |
文件系统中文件节点总数 |
%d |
文件系统中空闲文件节点数 |
%f |
文件系统中空闲块数 |
%i |
十六进制文件系统ID |
%I |
允许的文件名最大长度 |
%n |
文件名 |
%s |
块大小(用于快速传输) |
%S |
基本块大小(用于块计数) |
%t |
十六进制类型描述 |
%T |
可读性较好的类型描述 |
示例
[root@localhost ~]# man pwd > test.txt
[root@localhost ~]# stat test.txt
File: ‘test.txt’
Size: 1601 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 68239821 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-03-30 13:23:47.099543369 -0400
Modify: 2021-03-30 13:23:47.108543370 -0400
Change: 2021-03-30 13:23:47.108543370 -0400
Birth: -
[root@localhost ~]# stat -f test.txt
File: "test.txt"
ID: fd0000000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 4587008 Free: 4351244 Available: 4351244
Inodes: Total: 18358272 Free: 18327015
[root@localhost ~]# stat -t test.txt
test.txt 1601 8 81a4 0 0 fd00 68239821 1 0 0 1617125027 1617125027 1617125027 0 4096 unconfined_u:object_r:admin_home_t:s0
## -L 参数示例
[root@localhost ~]# touch a
[root@localhost ~]# ln -s a b
[root@localhost ~]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 30 13:42 a
lrwxrwxrwx. 1 root root 1 Mar 30 13:42 b -> a
## 省略了很多不需要的内容
[root@localhost ~]# stat a
Inode: 68239822
[root@localhost ~]# stat b ## 此时查看的是链接文件 b 的信息, 如果想要查看 a 文件, 可以使用 -L 参数
Inode: 68239823
[root@localhost ~]# stat -L b
Inode: 68239822
## -c
## --printf
[root@localhost ~]# stat --printf='Name: %n\nPermissions: %a\n' test.txt
Name: test.txt
Permissions: 644