概述

stat 命令可以用于显示文件的状态信息,比 ls 命令输出的信息更加详细。

在这里插入图片描述

如图可见 stat 命令可以查看的信息包括:

  • File:文件名及文件绝对路径。
  • Size:文件大小。
  • Blocks:文件使用的数据块数。
  • IO Block:IO 块大小。
  • Device:设备编号。
  • Inode:inode 号。
  • Links:链接数。
  • Access:文件的权限。
  • Uid:文件的所有者 ID。
  • Gid:文件所属组 ID。
  • Access:表示最后一次访问文件的时间(只是访问,没有修改)。
  • Modify:表示最后一次修改文件的时间。
  • Change:表示最后一次对文件属性改变的时间,包括权限、大小、属性等。
  • Birth:文件创建时间,不过已经未用了,显示均为 -

语法

该命令的语法如下:

stat [选项] 文件或目录名

该命令支持的选项有:

选项说明
-L, --dereference支持符号连接,即使用该选项会显示的原始文件状态信息
-f, --file-system显示文件系统状态而非文件状态
-c, --format=FORMAT按照指定格式输出,结尾有换行
–printf=FORMAT类似于 --format 选项,但是解释反斜杠转义,而不是输出强制性换行符。如果需要换行,需要在 FORMAT 中包含换行符 \n
-t, --terse以简洁方式输出信息
–help显示指令的帮助信息
–version显示指令的版本信息

其中 FORMAT 能够支持有效格式符(不包括文件系统)如下:

格式符说明
%a八进制中的访问权限
%A人类可读形式的访问权
%b分配的块数(请参阅%B)
%B%b报告的每个块的大小(字节)
%CSELinux安全上下文字符串
%d十进制设备编号
%D十六进制的设备编号
%f十六进制原始模式
%F文件类型
%g所有者的组ID
%G所有者的组名称
%h硬链接数
%iinode数
%m挂载点
%n文件名
%N带取消引用(如果是符号链接)的带引号的文件名
%o最佳I/O传输大小提示
%s总大小,以字节为单位
%t主要设备类型(十六进制),用于字符/块设备特殊文件
%T次要设备类型(十六进制),用于字符/块设备特殊文件
%u所有者的用户ID
%U所有者的用户名
%w文件出生时间,人类可读;-如果未知
%W文件生成时间,自纪元起的秒数;如果未知,则为0
%x最后一次访问的时间,人类可读
%X上次访问的时间,自纪元起的秒数
%y上次修改的时间,人类可读
%Y上次修改的时间,自纪元起的秒数
%z最后更改的时间,人类可读
%Z上次更改的时间,自新纪元起的秒数

其中 FORMAT 能够支持有效格式符(包括文件系统)如下:

格式符说明
%a非超级用户可用的空闲块
%b文件系统中的数据块总数
%c文件系统中的文件节点总数
%d文件系统中的空闲文件节点
%f文件系统中的空闲块
%i十六进制文件系统ID
%l文件名的最大长度
%n文件名
%s块大小(用于更快的传输)
%S基本块大小(用于块计数)
%t十六进制文件系统类型
%T人类可读形式的文件系统类型

使用

查看指定文件状态信息

如果要查看指定文件或目录的状态信息,命令格式如下:

# 语法
stat 文件名
# 示例
stat test.txt
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/4b83dd62ef634e43b37a8c8a48c01971.png)

### 查看文件所在文件系统状态信息
如果要查看指定文件所在文件系统的状态信息,可以加上 `-f` 选项进行查看。命令格式如下:
```bash
# 语法
stat -f 文件名
# 示例
stat -f test.txt
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/22001f42237b40b383d6288a1f9d9b17.png)


### 查看符号链接指向的原文件状态信息
如果要查看符号链接所指向的原文件的状态信息,需要加上 `-L` 选项。命令格式如下:
```bash
# 语法
stat -L 符号链接文件名
# 示例
stat -L test.link
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec2a823fcd08426791186ae76b87ad3c.png)

### 获取文件指定信息
如果只是想要获取到文件的某部分状态信息,可以通过 `-c` 选项显示指定格式符所表示的信息。命令格式如下:
```bash
# 语法
stat -c 格式符 文件名
# 示例
# 获取文件 inode
stat -c %i test.txt
# 获取文件所属用户名和用户ID
stat -c "%U:%u" test.txt
# 获取文件所属组名和组ID
stat -c "%G:%g" test.txt
# 获取文件访问时间
stat -c %x test.txt
# 获取文件权限
stat -c %A test.txt
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6e61e78a7484d49a08e6b5cb759a42c.png)

Logo

更多推荐