📜  Linux 中的 Stat 命令和示例

📅  最后修改于: 2022-05-13 01:57:29.031000             🧑  作者: Mango

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