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/ theitroad) Gid: ( 1000/ theitroad) 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”时,将显示以下文件信息:
- File-文件名。
- 大小-文件的大小(以字节为单位)。
- 块数-文件占用的已分配块数。
- IO块-每个块的大小(以字节为单位)。
- 文件类型-(例如常规文件,目录,符号链接…)
- 设备-设备编号(十六进制和十进制)。
- 索引节点-索引节点编号。
- 链接-硬链接数。
- 访问-数字和符号方法中的文件权限。
- Uid-所有者的用户ID和名称。
- Gid-群组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
当使用“ -f”选项调用“ stat”时,它将显示以下信息:
- File-文件名。
- ID-十六进制的文件系统ID。
- Namelen-文件名的最大长度。
- 基本块大小-文件系统上每个块的大小。
- 方块:
- 总计-文件系统中的总块数。
- 可用-文件系统中可用块的数量。
- 可用-非root用户可用的可用块数。
- 索引节点:
- 总计-文件系统中的总索引节点数。
- Free-文件系统中空闲索引节点的数量。
取消引用(跟随)符号链接
默认情况下,“ 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: 2016-07-24 11:11:48.128794519 +0200 Change: 2016-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: %n\nPermissions: %a\n' /etc
'\ n'打印新行:
Name: /etc Permissions: 755
“状态”也可以以简洁的形式显示信息。
此格式对于其他实用程序的解析很有用。
使用'-t'('--terse')选项调用命令以以简洁的形式打印输出:
stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096
有关文件和文件系统的所有格式指令的完整列表,请在终端中输入“ man stat”或者“ stat --help”。