Linux Stat命令

stat 命令行实用程序,显示有关指定文件或文件系统的详细信息。

本文介绍了如何使用 stat 命令

使用 stat 命令

句法 stat 命令如下:

stat (OPTION)... FILE...

stat 接受一个或多个输入 FILE 命名并包括许多控制命令行为和输出的选项。

让我们看下面的例子。

stat file.txt

输出如下:

  File: file.txt
  Size: 4030      	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 13633379    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   linuxize)   Gid: ( 1000/   linuxize)
Access: 2019-11-06 09:52:17.991979701 +0100
Modify: 2019-11-06 09:52:17.971979713 +0100
Change: 2019-11-06 09:52:17.971979713 +0100
 Birth: -

没有选项启动时 stat 显示以下文件信息:

  • 文件的文件名。
  • 文件的大小-以字节为单位。
  • 块 – 文件,分配的块数。
  • IO块 – 大小在所有的块中的字节。
  • 文件类型-(例如常规文件,目录,符号链接…)
  • 装置-16十进制和十进制设备号。
  • i节点i节点号。
  • 链接-硬链接数。
  • 数字和符号方式的访问文件权限。
  • Uid所有者用户标识和名称。
  • 密码所有者的群组ID和名称。
  • 上下文-SELinux安全上下文。
  • 访问-上次访问文件的时间。
  • 已修改-上次修改文件内容的时间。
  • 修改时间-文件属性或内容的最后修改时间。
  • 出生文件创建时间(Linux不支持)。

显示有关文件系统的信息

要获取有关指定文件所在文件系统的信息,而不是有关文件本身的信息: -f,(--file-system)选项:

stat -f file.txt

该命令的输出如下:

  File: "package.json"
    ID: 8eb53097b4494d20 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 61271111   Free: 25395668   Available: 22265851
Inodes: Total: 15630336   Free: 13979610

什么时候 stat 被称为 -f 在选项的情况下,会显示以下信息。

  • 文件的文件名。
  • ID-十六进制文件系统ID。
  • Namelen-文件名的最大长度。
  • 文件系统的每个块的大小 – 基本块大小。
  • 块:
    • 文件系统中的块总数。
    • 自由号在文件系统中的空闲块。
    • 可用-非root用户可用的可用块数。
  • 索引节点:
    • 总 – 文件系统总的i-node的数量。
    • 自由号在文件系统空闲的i-node。

默认情况下, stat 它不遵循符号链接。当你在符号链接运行命令,而不是文件指向的符号链接输出,它包含符号链接的信息。

stat /etc/resolv.conf
  File: /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  Size: 39        	Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d	Inode: 8126659     Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-11-06 21:12:26.875956073 +0100
Modify: 2018-07-24 11:11:48.128794519 +0200
Change: 2018-07-24 11:11:48.128794519 +0200
 Birth: -

要取消引用(跟随)符号链接并显示有关该符号链接指向的文件的信息, -L,(--dereference)选项:

stat -L /etc/resolv.conf
  File: /etc/resolv.conf
  Size: 715       	Blocks: 8          IO Block: 4096   regular file
Device: 17h/23d	Inode: 989         Links: 1
Access: (0644/-rw-r--r--)  Uid: (  101/systemd-resolve)   Gid: (  103/systemd-resolve)
Access: 2019-11-06 20:35:25.603689619 +0100
Modify: 2019-11-06 20:35:25.555689733 +0100
Change: 2019-11-06 20:35:25.555689733 +0100
 Birth: -

定制输出

stat 该命令有两个选项,可让您自定义输出以满足您的需求。 -c,(--format="format")并且 --printf="format"

这两个选项之间的区别是当两个或多个文件用作操作符时。 --format 在每个操作数的输出之后会自动添加一个换行符。的 --printf 解释反斜杠转义符。

有许多可以使用的文件和文件系统格式指令。 --format--printf

例如,仅显示您使用的文件类型:

stat --format="%F" /dev/null
character special file

您可以组合任意数量的格式指令,并可以选择在它们之间使用自定义分隔符。分隔符可以是单个字符或字符串。

stat --format="%n,%F" /dev/null
/dev/null,character special file

要解释特殊字符,例如换行符和制表符, --printf 选项:

stat --printf='Name: %nnPermissions: %an' /etc

n 输出新行:

Name: /etc
Permissions: 755

stat 您也可以以简洁的格式显示信息。此格式对于其他实用程序的解析很有用。

调用命令 -t--terse)选项来打印以简明的格式的输出:

stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096

有关文件和文件系统类型的所有格式指令的完整列表 man statstat --help 在航站楼。

总结

stat 该命令输出有关指定文件和文件系统的信息。

Linux还有其他几个命令,可以显示有关特定文件的信息。 ls 仅显示提供的最常用的信息块 stat 命令

如果您有任何疑问或反馈,请随时发表评论。