<p>stat命令用于显示文件详细状态信息,如大小、权限、时间戳和inode等。使用格式为stat [选项] 文件名,例如stat test.txt可查看具体文件的元数据。输出包括文件名、大小(字节)、占用块数、IO块大小、设备号、inode号、硬链接数、权限、所有者、所属组及访问、修改、状态变更时间。常用选项有-c或--format自定义输出,--printf支持转义,-L跟随符号链接。常用格式符包括%a(八进制权限)、%A(权限字符串)、%U(用户名)、%G(组名)、%Y(修改时间戳)。实际应用中可用于检查文件修改情况、排查权限问题、脚本判断文件属性或分析硬链接异常。例如通过[ $(stat -c %Y filename) -gt $(( $(date +%s) - 3600 )) ] && echo "Recently modified"判断文件是否在一小时内被修改。掌握stat命令有助于深入理解文件系统属性并提升系统调试效率。</p>
在Linux系统中,stat 命令用于显示文件或文件系统的详细状态信息。它比 ls 提供更全面的元数据,比如文件大小、权限、时间戳、inode编号等。掌握这个命令有助于深入理解文件属性和排查系统问题。
基本语法
stat 命令的基本格式如下:
stat [选项] 文件名
例如,查看当前目录下 test.txt 的详细信息:
stat test.txt
输出内容详解
执行 stat 命令后,会输出类似以下信息:
File: test.txt
Size: 4096 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 131073 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2024-04-05 10:30:22.000000000 +0800
Modify: 2024-04-05 10:25:10.000000000 +0800
Change: 2024-04-05 10:25:10.000000000 +0800
Birth: -
各字段含义如下:
- File:文件名
- Size:文件大小(字节)
- Blocks:占用的块数
- IO Block:I/O 块大小
- Device:所在设备编号
- Inode:inode 节点号
- Links:硬链接数量
- Uid/Gid:所有者和所属组
- Access/Modify/Change:访问、修改、状态更改时间
常用选项
stat 支持多种格式化输出方式,常见选项包括:
- -c 或 --format:自定义输出格式
- --printf:类似 -c,支持转义字符
- -L:跟随符号链接查看目标文件信息
例如,只显示文件的修改时间和大小:
stat -c "Size: %s bytes, Modified: %y" test.txt
常用格式符:
- %a:八进制权限
- %A:可读权限字符串(如 -rw-r--r--)
- %U:所有者用户名
- %G:所属组名
- %Y:修改时间(Unix 时间戳)
实际应用场景
stat 命令在以下场景非常有用:
- 检查文件是否被修改过,通过对比 Modify 和 Access 时间
- 排查权限问题,确认 Uid、Gid 和权限位是否正确
- 脚本中获取文件 inode 或大小进行判断
- 分析硬链接数量是否异常
例如,判断一个文件是否在过去一小时内被修改:
[ $(stat -c %Y filename) -gt $(( $(date +%s) - 3600 )) ] && echo "Recently modified"
基本上就这些。stat 虽然不常出现在日常操作中,但在需要精确文件信息时非常实用。熟悉它的输出和格式控制,能提升系统管理和调试效率。
linux node 字节 access unix linux系统 格式化输出 echo date format printf 字符串 linux unix Access