在 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

stress工具官网_linux

输出条目对应如下:

  • 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

stress工具官网_符号链接_02

(3) 显示文件系统状态

可以使用 -f 选项检查文件所在的文件系统状态,如下所示。

$ stat -f /home

stress工具官网_stress工具官网_03

(4) 以简洁的形式显示信息

-t 选项用于以简洁的格式显示信息,如下所示

$ stat -t file1.txt

stress工具官网_stress工具官网_04

(5) 启用符号链接的跟随

通常,如果您在符号链接上运行 stat 命令,则只会为您提供有关链接的信息,而不是该链接指向的文件。

以 /usr/share/Zoneinfo/America/Cayman 符号链接为例。

$ stat /usr/share/zoneinfo/America/Cayman

stress工具官网_stress工具官网_05

在上面的示例中,符号链接 /usr/share/Zoneinfo/America/Cayman 指向 Panama,符号链接仅为 6 个字节。

要获取链接指向的文件的信息,使用-L 选项,也称为解引用选项。

$ stat -L /usr/share/zoneinfo/America/Cayman

stress工具官网_stress工具官网_06

(6) 格式序列

在前面的例子中,我们已经看到 stat 命令在终端上打印大量信息。如果需要特定的信息,可以使用格式序列自定义输出,以提供所需的内容,并保留其他细节。

用于自定义输出的常用表达式包括 printf 或 format 选项

例如,要只显示文件的 inode,请使用如下所示的 %i 格式序列。操作数 \n 打印新行。

$ stat --printf='%i\n' file1.txt

stress工具官网_运维_07

要显示访问权限和 uid,请使用 %a%u 格式序列。

$ stat --printf='%a:%u\n' file1.txt

stress工具官网_linux_08

format 选项打印新行,而不需要额外的操作数。

$ stat --format='%a:%F' file1.txt

stress工具官网_linux_09

下面是可用格式序列的完整列表

  • %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

stress工具官网_运维_10

您也可以访问 stat 命令的手册页,运行

$ man stat

stress工具官网_stress工具官网_11

(8) 查看 stat 的版本

$ stat --version

stress工具官网_符号链接_12