Linux系统之stat命令的基本使用
- 一、stat命令 介绍
- 二、stat命令帮助
- 2.1 查询帮助信息
- 2.2 stat命令的帮助解释
- 三、stat命令的基本使用
- 3.1 查询文件信息
- 3.2 查看文件系统状态
- 3.3 使用格式化输出
- 3.4 以简洁形式打印信息
- 四、注意事项
一、stat命令 介绍
stat 命令用于显示文件或文件系统状态的详细信息。它提供了比 ls -l 更加详细的输出,包括时间戳、权限、所有者等信息。
二、stat命令帮助
2.1 查询帮助信息
在Rocky Linux 9.4系统中,我们在命令行终端使用–help选项查询stat的命令帮助信息。
[root@RockyLinux-server001 ~]# stat --help
用法:stat [选项]... 文件...
显示文件或文件系统的状态。必选参数对长短选项同时适用。-L, --dereference 跟随链接-f, --file-system 显示文件系统状态而非文件状态--cached=MODE specify how to use cached attributes;useful on remote file systems. See MODE below-c --format=FORMAT use the specified FORMAT instead of the default;output a newline after each use of FORMAT--printf=FORMAT like --format, but interpret backslash escapes,and do not output a mandatory trailing newline;if you want a newline, include \n in FORMAT-t, --terse print the information in terse form--help 显示此帮助信息并退出--version 显示版本信息并退出The --cached MODE argument can be; always, never, or default.
`always` will use cached attributes if available, while
`never` will try to synchronize with the latest attributes, and
`default` will leave it up to the underlying file system.The valid format sequences for files (without --file-system):%a permission bits in octal (note '#' and '0' printf flags)%A permission bits and file type in human readable form%b number of blocks allocated (see %B)%B the size in bytes of each block reported by %b%C SELinux security context string%d device number in decimal%D device number in hex%f raw mode in hex%F file type%g group ID of owner%G group name of owner%h number of hard links%i inode number%m mount point%n file name%N quoted file name with dereference if symbolic link%o optimal I/O transfer size hint%s total size, in bytes%t major device type in hex, for character/block device special files%T minor device type in hex, for character/block device special files%u user ID of owner%U user name of owner%w time of file birth, human-readable; - if unknown%W time of file birth, seconds since Epoch; 0 if unknown%x time of last access, human-readable%X time of last access, seconds since Epoch%y time of last data modification, human-readable%Y time of last data modification, seconds since Epoch%z time of last status change, human-readable%Z time of last status change, seconds since EpochValid format sequences for file systems:%a free blocks available to non-superuser%b total data blocks in file system%c total file nodes in file system%d free file nodes in file system%f free blocks in file system%i file system ID in hex%l maximum length of filenames%n file name%s block size (for faster transfers)%S fundamental block size (for block counts)%t file system type in hex%T file system type in human readable form--terse 和下列<格式>等效::%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
--terse --file-system 与下列<格式>等效:%n %i %l %t %s %S %b %f %a %c %d注意:您的shell 可能内置了自己的stat 程序版本,它会覆盖这里所提及的相应
版本。请查阅您的shell 文档获知它所支持的选项。
2.2 stat命令的帮助解释
stat
命令用法
用法:stat [选项]... 文件...
显示文件或文件系统的状态。
- 通用选项
短选项 | 长选项 | 描述 |
---|---|---|
-L | –dereference | 跟随链接 |
-f | –file-system | 显示文件系统状态而非文件状态 |
–cached=MODE | 指定如何使用缓存属性;对远程文件系统有用。参见下面的 MODE 说明 | |
-c | –format=FORMAT | 使用指定的 FORMAT 替代默认格式;每次使用 FORMAT 后输出一个换行符 |
–printf=FORMAT | 类似于 --format,但解释反斜杠转义,并且不强制输出尾部换行符;如果需要换行符,请在 FORMAT 中包含 \n | |
-t | –terse | 以简洁形式打印信息 |
–help | 显示此帮助信息并退出 | |
–version | 显示版本信息并退出 |
关于 --cached
的 MODE 参数:
-
always
: 如果可用,则使用缓存属性; -
never
: 尝试同步最新的属性; -
default
: 由底层文件系统决定。 -
文件格式序列
序列 | 描述 |
---|---|
%a | 权限位,八进制表示(注意 ‘#’ 和 ‘0’ printf 标志) |
%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 | 文件创建时间,自纪元以来的秒数;未知时显示 0 |
%x | 最后访问时间,人类可读 |
%X | 最后访问时间,自纪元以来的秒数 |
%y | 最后数据修改时间,人类可读 |
%Y | 最后数据修改时间,自纪元以来的秒数 |
%z | 最后状态改变时间,人类可读 |
%Z | 最后状态改变时间,自纪元以来的秒数 |
- 文件系统格式序列
序列 | 描述 |
---|---|
%a | 对非超级用户可用的空闲块数 |
%b | 文件系统中的总数据块数 |
%c | 文件系统中的总文件节点数 |
%d | 文件系统中的空闲文件节点数 |
%f | 文件系统中的空闲块数 |
%i | 文件系统的 ID,十六进制 |
%l | 文件名的最大长度 |
%n | 文件名 |
%s | 块大小(用于快速传输) |
%S | 基础块大小(用于块计数) |
%t | 文件系统类型,十六进制 |
%T | 文件系统类型,人类可读形式 |
注释:
--terse
等效于以下格式:%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
--terse --file-system
等效于以下格式:%n %i %l %t %s %S %b %f %a %c %d
注意事项:
您的 shell 可能内置了自己的 stat
程序版本,它会覆盖这里所提及的相应版本。请查阅您的 shell 文档获知它所支持的选项。
三、stat命令的基本使用
3.1 查询文件信息
我们先使用ls命令查询测试文件的基本信息:
[root@RockyLinux-server001 ~]# ls -l aa01.txt
-rw-r--r--. 1 root root 0 12月 10 16:14 aa01.txt
使用stat命令查询测试文件的基本信息:
[root@RockyLinux-server001 ~]# stat aa01.txt文件:aa01.txt大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:201326725 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2024-12-10 16:14:42.188422475 +0800
最近更改:2024-12-10 16:14:42.188422475 +0800
最近改动:2024-12-10 16:14:42.188422475 +0800
创建时间:2024-12-10 16:14:42.188422475 +0800
3.2 查看文件系统状态
要查看文件系统的状态信息,我们可以使用 -f 选项:
[root@RockyLinux-server001 ~]# stat -f aa01.txt文件:"aa01.txt"ID:fd0000000000 文件名长度:255 类型:xfs
块大小:4096 基本块大小:4096块:总计:18333696 空闲:17516044 可用:17516044
Inodes: 总计:36700160 空闲:36642165
3.3 使用格式化输出
stat 支持使用 --format (-c) 或 --printf 来定制输出格式。这对于脚本编写非常有用,因为它允许你提取特定的信息。例如,只获取文件的修改时间:
[root@RockyLinux-server001 ~]# stat --format=%y aa01.txt
2024-12-10 16:14:42.188422475 +0800
[root@RockyLinux-server001 ~]# stat --format="Modify time: %y" aa01.txt
Modify time: 2024-12-10 16:14:42.188422475 +0800
3.4 以简洁形式打印信息
stat -t aa01.txt 命令以简洁格式输出了文件 aa01.txt 的基本信息,包括文件名、大小、设备号、用户和组ID、inode号、时间戳(访问、修改、状态改变及创建时间)、块大小以及SELinux安全上下文。
[root@RockyLinux-server001 ~]# stat -t aa01.txt
aa01.txt 0 0 81a4 0 0 fd00 201326725 1 0 0 1733818482 1733818482 1733818482 1733818482 4096 unconfined_u:object_r:admin_home_t:s0
四、注意事项
- 使用
stat
命令时确保你有足够的权限访问目标文件或目录,否则可能无法获取完整信息。 stat
的输出可以非常详细,使用-t
或--terse
选项可以获得更紧凑、适合脚本处理的输出格式。- 对于符号链接,使用
-L
或--dereference
选项可以让stat
显示链接指向的目标文件的状态而非链接本身。 - 当你需要自定义输出格式时,利用
--format
(-c
) 或--printf
选项可以精确控制显示哪些信息以及它们的排列方式。 - 查看文件系统状态而不是单个文件状态时,请使用
-f
或--file-system
选项。 - 注意你的 shell 可能有内置的
stat
命令,这可能会覆盖系统提供的stat
,查阅 shell 文档以了解其特性。 - 在多语言环境下运行
stat
时,某些字段如时间戳的格式可能会根据当前 locale 设置而有所不同。