在 Linux 中,似乎总是有一种巧妙的方法来完成任务。对于任何任务,总是有多个命令行实用程序以更好的方式执行它。Linux stat 命令是一个命令行工具,用于显示文件的详细信息。
在本指南中,我们将重点介绍 Linux 中的 8 种 stat 命令用法。这适用于所有 Linux 发行版。
stat 命令
可以将 stat 命令看作 ls -l 命令的更好版本。虽然 -l 标志提供了关于文件的更多细节,比如文件所有权和权限,但 stat 命令更深入,提供了关于文件的大量信息。
Linux stat 命令的语法如下所示
$ stat [OPTION] filename
(1) 不带参数的 stat 命令
以其最简单的形式 (没有任何参数),stat 命令显示默认输出。这包括文件大小和类型,设备类型,Inode 号,UID,GID,链接数以及文件的访问/修改日期。
$ stat file1.txt
输出条目对应如下:
- File : 这将显示文件的名称
- Size : 文件大小 (以字节为单位)
- Block : 分配给文件的块数
- IO Block : 每个块的字节大小
- Device : 十六进制或十进制格式的设备号
- Inode : 文件的 inode 编号
- Links : 与文件相关联的硬链接数
- Access : 以符号或数字格式的文件权限
- Uid : 所有者的用户 ID 和的名称
- Gid : 所有者的组 ID 和名称
- Context : SeLinux 安全上下文
- File type : 文件的类型 (是否普通文件,符号链接等)
- Access : 文件最后被访问的时间
- Modify : 文件内容最后更改的时间
- Change : 显示最近一次文件的元数据,如权限和所有权被改变。
(2) 查看多个文件信息
通过在命令行逐个指定文件,可以查看关于多个文件的详细报告,如下所示。
$ stat file1.txt file2.pdf
(3) 显示文件系统状态
可以使用 -f 选项检查文件所在的文件系统状态,如下所示。
$ stat -f /home
(4) 以简洁的形式显示信息
-t 选项用于以简洁的格式显示信息,如下所示
$ stat -t file1.txt
(5) 启用符号链接的跟随
通常,如果您在符号链接上运行 stat 命令,则只会为您提供有关链接的信息,而不是该链接指向的文件。
以 /usr/share/Zoneinfo/America/Cayman 符号链接为例。
$ stat /usr/share/zoneinfo/America/Cayman
在上面的示例中,符号链接 /usr/share/Zoneinfo/America/Cayman 指向 Panama,符号链接仅为 6 个字节。
要获取链接指向的文件的信息,使用-L 选项,也称为解引用选项。
$ stat -L /usr/share/zoneinfo/America/Cayman
(6) 格式序列
在前面的例子中,我们已经看到 stat 命令在终端上打印大量信息。如果需要特定的信息,可以使用格式序列自定义输出,以提供所需的内容,并保留其他细节。
用于自定义输出的常用表达式包括 printf 或 format 选项
例如,要只显示文件的 inode,请使用如下所示的 %i
格式序列。操作数 \n
打印新行。
$ stat --printf='%i\n' file1.txt
要显示访问权限和 uid,请使用 %a
和 %u
格式序列。
$ stat --printf='%a:%u\n' file1.txt
format 选项打印新行,而不需要额外的操作数。
$ stat --format='%a:%F' file1.txt
下面是可用格式序列的完整列表
- %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 档案创建的时间,人类可读 - 如果未知,显示为 0
- %W 档案创建的时间,Epoch 时间 - 如果未知,显示为 0
- %x 最后一次访问的时间,人类可读
- %X 最后一次访问的时间,Epoch 时间
- %y 显示最后一次修改的时间,人类可读
- %Y 显示最后一次修改的时间,Epoch 时间
- %z 最后一次改变的时间,人类可读
- %Z 最后一次改变的时间,Epoch 时间
(7) 获取 stat 命令帮助
要获得更多命令选项,请使用 stat 命令中的帮助选项。
$ stat --help
您也可以访问 stat 命令的手册页,运行
$ man stat
(8) 查看 stat 的版本
$ stat --version