Linux 的 stat 命令
Linux stat
命令用于显示 inode 内容。
话说这个inode是个什么东西呢?对于存储在硬盘上的文件,特别是Linux的概念就是,一切皆文件。其最小的存储单元为512字节即一个扇区sector;在读取文件的时候,为了提高效率,是按照4KB的块block来读取的,所以这样看来每次读取了8个sector。而对于每个文件为了索引,其元数据的各种信息就是stat
获取的,用于描述创建者、文件的各种日期、大小等等等等信息,这个元数据的id就可以认为是inode了,以上。
官方的定义为:
stat - display file or file system status
用法为:
1 | $ stat [options] filename/directory |
其中的参数为:
-L
,--dereference
: 不显示链接的原始文件-f
,--file-system
:显示文件系统状态--printf=FORMAT
: 与C语言的类似,不过看着转义符更多一些-t
,--terse
:超级简介的模式
最简单的使用
最简单的其实也是最有用的,直接跟上文件或者目录,如下:
1 | $ stat text.txt |
各个段的解释为:
- File:文件或文件夹名
- Size:文件大小
- Blocks:文件使用的数据块总数
- IO Block:IO块大小
- regular file:文件类型(常规文件)或者directory文件夹
- Device:设备的编号
- Inode:Inode号
- Links:链接数
- Access:文件的权限
- Gid, Uid:文件所有者的Gid和Uid
- Access:文件的访问时间
- Modify:文件的修改时间
- Change:文件的状态时间
显示文件系统
参数-f
将显示文件系统信息,可以看到Type:xfs这个信息。
1 | $ stat -f text.txt |
关于printf的那些格式化字符串
--printf=FORMAT
选项可以跟的FORMAT有很多,较常用为:
格式化字符串 | 含义 |
---|---|
%A | 易读的访问状态 |
%B | 每个块的大小(单位为字节) |
%d | 十进制的设备号 |
%F | 文件类型 |
%G | 所有者的组名 |
%i | inode数字 |
%m | 挂载点 |
%n | 文件名 |
%s | 总大小(单位:字节) |
%U | 所有者的用户名 |
%w | 易读的文件生成时间(大写的为Epoch) |
%x | 易读的文件访问时间(大写的为Epoch) |
%y | 易读的文件修改时间(大写的为Epoch) |
%z | 易读的文件上一次修改状态时间(大写的为Epoch) |
炫技 : 一个类似ls -l的用法
下面的这个命令可以实现类似ls -l
的用法,可以扩展更多,也可以自定义使用,比如alias
等等。
1 | $ stat --print="%A. %U %G %s %x %n \n" text.txt |