stat 概述
`stat` 命令显示的是文件或目录自身的内容,而不是文件系统为管理该对象而存储的元数据。这提供了比 `ls -l` 更详细的信息,例如文件的创建时间、最后修改时间、访问次数等,便于分析文件的更改历史或访问模式。
stat 的主要角色
`stat` 命令主要用于以下目的:
主要应用领域
- **检查文件属性**:准确检查文件的所有权、权限、大小等。
- **时间戳分析**:通过检查文件的创建、最后修改和最后访问时间等多种时间信息,追踪文件的更改历史。
- **符号链接信息**:检查符号链接的目标路径及链接本身的信息。
- **文件系统调试**:通过磁盘空间使用、块分配、inode 信息等诊断文件系统的问题。
理解 stat 输出信息
`stat` 命令的输出由多个项目组成。理解每个项目的含义非常重要。
主要输出项目
- File: 目标文件或目录的名称。
- Size: 文件的大小(字节)。对于目录,通常显示为 4096 字节。
- Blocks: 文件在磁盘上占用的 512 字节块的数量。
- IO Block: 为文件执行 I/O 操作时的有效块大小。
- Type: 文件的类型。例如:常规文件、目录、符号链接等。
- Device: 文件所在设备的 ID(major:minor)。
- Inode: 文件系统内文件的唯一标识符 inode 编号。硬链接共享相同的 inode。
- Links: 对该文件的硬链接数量。
- Access: 文件的权限(八进制和 rwx 格式)。
- Uid / Gid: 文件的所有者(用户 ID)及其组(组 ID)及对应名称。
- Access / Modify / Change: `Access`: 最后访问时间 (atime),`Modify`: 最后修改时间 (mtime),`Change`: 最后更改时间 (ctime)。'Birth' 是创建时间 (crtime),可能并非所有文件系统都支持。
主要 stat 命令选项
`stat` 命令提供了一些有用的选项,可以指定输出格式或更改处理符号链接的方式。
1. 基本输出选项
2. 符号链接处理选项
3. 输出格式指定选项
生成的命令:
请尝试组合命令。
描述:
`stat` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 `stat` 命令的各种应用示例,学习如何检查和分析文件/目录的详细属性。
检查单个文件的所有信息
stat config.ini
输出 `config.ini` 文件的大小、权限、所有者、时间戳等所有详细信息。
检查符号链接本身的信息
stat -P mylink.sh
`mylink.sh` 指向 `actual_script.sh` 的符号链接时,输出 `mylink.sh` 本身的信息。(链接文件的大小、所有者等)
检查符号链接指向的原文件的信息
stat -L mylink.sh
`mylink.sh` 指向 `actual_script.sh` 的符号链接时,输出 `actual_script.sh` 文件的信息。
以用户自定义格式输出特定信息
stat -c '%n %s %y' my_document.txt
仅输出 `my_document.txt` 文件的名称、大小(字节)以及最后修改时间(YYYY-MM-DD HH:MM:SS)。
检查文件所属文件系统的信息
stat --file-system /var/log
检查 `/var/log` 目录所在文件系统的类型、块大小、挂载点等信息。
检查文件的 Unix 时间戳 (mtime)
stat -c '%Y' important_data.csv
在脚本中以 Unix 时间戳(秒)获取文件的修改时间,以便用于计算等。