Linux 中的 Stat 命令和示例
stat是一个命令,它提供有关文件和文件系统的信息。 stat 命令提供文件大小、访问权限以及用户 ID 和组 ID、文件的出生时间访问时间等信息。 stat 命令还有一个特性,它也可以提供文件系统信息。当我们想要任何文件的信息时,这是最好的工具。
现在让我们一一看看如何使用stat命令。
使用 stat 命令
使用 stat 命令的基本语法如下:
stat --options filenames
Stat 可以接受一个或多个文件名作为 stat 命令的输入。现在让我们看一个例子
stat /etc/resolv.conf
输出:
我们从 stat 得到的信息
以下是我们在运行 stat 命令时获得的有关文件的信息。
- 文件:提供的文件的名称。如果提供的文件是符号链接,则名称将不同。
- 大小:给定文件的大小(以字节为单位)。
- 块:分配给文件以存储在硬盘上的块总数。
- IO 块:每个已分配块的大小(以字节为单位)。
- 文件类型:文件可以是以下类型:常规文件、特殊文件、目录或符号链接。
- 设备:十六进制格式的设备编号。
- inode:文件的inode编号。
- 链接:文件的硬链接数。
- 访问:数字和符号方法中的访问权限。
- Context:该字段存储 SELinux 安全上下文。
- 访问:上次访问文件的时间。
- 修改:上次修改文件的时间。
- 更改:上次更改文件属性或内容的时间。
- 出生时间:创建文件的时间。
现在让我们看看如何显示有关文件系统的信息。
显示文件系统信息
当我们使用 -f (–file-system) 选项提供文件名时,stat 命令可以提供文件系统信息。将 -f 选项与 stat 命令结合使用的语法:
stat -f filename
这是 -f 选项的一个示例:
我们还可以提供目录或文件系统作为 stat 命令的输入,如下所示:
stat -f /
我们从 stat 中获得的文件系统信息
- 文件:提供的文件的名称。
- ID:十六进制格式的文件系统ID。
- Namelen:文件名的最大长度(字符数)。
- 基本块大小:文件系统上每个块的总大小。
- 块:
- Total:文件系统中的块总数
- Free:文件系统中的空闲块总数
- 可用:非 root 用户可用的空闲块总数
- 索引节点:
- Total:文件系统中的 inode 总数。
- Free:文件系统中空闲 inode 的总数。
对多个文件使用 Stat
要使用 stat 命令获取有关多个文件的信息,只需提及以空格分隔的文件名:
stat locale.conf login.defs
这将显示有关上述文件的信息。
取消引用符号链接
如果我们将符号链接文件提供给 stat 命令,那么它将提供有关符号链接的信息而不是原始文件。这是一个例子:
现在让我们看看如何取消引用符号链接。跟踪或取消引用符号并显示有关文件的信息,其中符号类似点 stat 提供 -L (–dereference) 选项。我们可以使用此选项来取消引用符号链接。这里示例:
stat -L /etc/localtime
输出将是这样的:
我们可以看到 stat 正在显示有关 /bin 文件夹的信息。
自定义输出
stat 为我们提供了自定义输出的选项,而不是使用默认输出格式。我们可以通过两种方式自定义输出
第一种是将 -c 选项或 –format 选项与输出格式一起使用。如果我们使用 –format 选项向 stat 命令提供多个文件,那么它会在每个操作数的输出后自动添加新行:
stat --format='%n' /etc/passwd
打印自定义输出的另一种方法是使用带有格式的 –print 选项。使用此选项,我们可以为格式提供尾随字符,例如,如果我们想在每行输出后添加一个新行,我们可以使用带有反斜杠的\n尾随字符。这是使用 –print 选项之一
stat --print='%n\n' /etc/passwd
要知道所有的格式序列读取使用man命令中统计的人PAG即stat 还可以以简洁的形式显示信息。我们可以使用 -terse 选项以简洁的形式显示信息:
stat -t /etc/passwd
了解时间戳
时间戳显示有关时区的信息。通常,时间戳显示从 UTC 时区创建文件的时间。如果值为正,则文件是在 UTC 时区之前创建的,如果值为负,则文件是在 UTC 时区之前创建的。例如:
在上面的示例中,时间戳的值为 +0530,这意味着文件是在 UTC 时间前 5 小时 30 分钟创建的。这是 stat 命令的一个注意事项,您的 shell 可能有自己的 stat 版本。要了解您的 shell 统计信息,请使用 man 命令阅读手册页:
man stat