前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux系统之stat命令的基本使用

Linux系统之stat命令的基本使用

原创
作者头像
江湖有缘
发布2024-12-27 13:13:34
发布2024-12-27 13:13:34
1170
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、stat命令 介绍

stat 命令用于显示文件或文件系统状态的详细信息。它提供了比 ls -l 更加详细的输出,包括时间戳、权限、所有者等信息。

二、stat命令帮助

2.1 查询帮助信息

在Rocky Linux 9.4系统中,我们在命令行终端使用--help选项查询stat的命令帮助信息。

代码语言:bash
复制
[root@RockyLinux-server001 ~]# stat  --help
用法:stat [选项]... 文件...
显示文件或文件系统的状态。

必选参数对长短选项同时适用。
  -L, --dereference     跟随链接
  -f, --file-system     显示文件系统状态而非文件状态
      --cached=MODE     specify how to use cached attributes;
                          useful on remote file systems. See MODE below
  -c  --format=FORMAT   use the specified FORMAT instead of the default;
                          output a newline after each use of FORMAT
      --printf=FORMAT   like --format, but interpret backslash escapes,
                          and do not output a mandatory trailing newline;
                          if you want a newline, include \n in FORMAT
  -t, --terse           print the information in terse form
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

The --cached MODE argument can be; always, never, or default.
`always` will use cached attributes if available, while
`never` will try to synchronize with the latest attributes, and
`default` will leave it up to the underlying file system.

The valid format sequences for files (without --file-system):

  %a   permission bits in octal (note '#' and '0' printf flags)
  %A   permission bits and file type in human readable form
  %b   number of blocks allocated (see %B)
  %B   the size in bytes of each block reported by %b
  %C   SELinux security context string
  %d   device number in decimal
  %D   device number in hex
  %f   raw mode in hex
  %F   file type
  %g   group ID of owner
  %G   group name of owner
  %h   number of hard links
  %i   inode number
  %m   mount point
  %n   file name
  %N   quoted file name with dereference if symbolic link
  %o   optimal I/O transfer size hint
  %s   total size, in bytes
  %t   major device type in hex, for character/block device special files
  %T   minor device type in hex, for character/block device special files
  %u   user ID of owner
  %U   user name of owner
  %w   time of file birth, human-readable; - if unknown
  %W   time of file birth, seconds since Epoch; 0 if unknown
  %x   time of last access, human-readable
  %X   time of last access, seconds since Epoch
  %y   time of last data modification, human-readable
  %Y   time of last data modification, seconds since Epoch
  %z   time of last status change, human-readable
  %Z   time of last status change, seconds since Epoch

Valid format sequences for file systems:

  %a   free blocks available to non-superuser
  %b   total data blocks in file system
  %c   total file nodes in file system
  %d   free file nodes in file system
  %f   free blocks in file system
  %i   file system ID in hex
  %l   maximum length of filenames
  %n   file name
  %s   block size (for faster transfers)
  %S   fundamental block size (for block counts)
  %t   file system type in hex
  %T   file system type in human readable form

--terse 和下列<格式>等效::
    %n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
--terse --file-system 与下列<格式>等效:
    %n %i %l %t %s %S %b %f %a %c %d

注意:您的shell 可能内置了自己的stat 程序版本,它会覆盖这里所提及的相应
版本。请查阅您的shell 文档获知它所支持的选项。

2.2 stat命令的帮助解释

  • stat 命令用法
代码语言:markdown
复制
用法:stat [选项]... 文件...
显示文件或文件系统的状态。
  • 通用选项

短选项

长选项

描述

-L

--dereference

跟随链接

-f

--file-system

显示文件系统状态而非文件状态

--cached=MODE

指定如何使用缓存属性;对远程文件系统有用。参见下面的 MODE 说明

-c

--format=FORMAT

使用指定的 FORMAT 替代默认格式;每次使用 FORMAT 后输出一个换行符

--printf=FORMAT

类似于 --format,但解释反斜杠转义,并且不强制输出尾部换行符;如果需要换行符,请在 FORMAT 中包含 \n

-t

--terse

以简洁形式打印信息

--help

显示此帮助信息并退出

--version

显示版本信息并退出

关于 --cached 的 MODE 参数:

  • always: 如果可用,则使用缓存属性;
  • never: 尝试同步最新的属性;
  • default: 由底层文件系统决定。
  • 文件格式序列

序列

描述

%a

权限位,八进制表示(注意 '#' 和 '0' printf 标志)

%A

权限位和文件类型,人类可读形式

%b

分配的块数(参见 %B)

%B

%b 报告的每个块的大小,以字节为单位

%C

SELinux 安全上下文字符串

%d

设备号,十进制

%D

设备号,十六进制

%f

十六进制的原始模式

%F

文件类型

%g

所有者的组 ID

%G

所有者的组名

%h

硬链接数

%i

inode 编号

%m

挂载点

%n

文件名

%N

引用的文件名,如果是符号链接则去引用

%o

最佳 I/O 传输大小提示

%s

总大小,以字节为单位

%t

字符/块设备特殊文件的主要设备类型,十六进制

%T

字符/块设备特殊文件的次要设备类型,十六进制

%u

所有者的用户 ID

%U

所有者的用户名

%w

文件创建时间,人类可读;未知时显示 -

%W

文件创建时间,自纪元以来的秒数;未知时显示 0

%x

最后访问时间,人类可读

%X

最后访问时间,自纪元以来的秒数

%y

最后数据修改时间,人类可读

%Y

最后数据修改时间,自纪元以来的秒数

%z

最后状态改变时间,人类可读

%Z

最后状态改变时间,自纪元以来的秒数

  • 文件系统格式序列

序列

描述

%a

对非超级用户可用的空闲块数

%b

文件系统中的总数据块数

%c

文件系统中的总文件节点数

%d

文件系统中的空闲文件节点数

%f

文件系统中的空闲块数

%i

文件系统的 ID,十六进制

%l

文件名的最大长度

%n

文件名

%s

块大小(用于快速传输)

%S

基础块大小(用于块计数)

%t

文件系统类型,十六进制

%T

文件系统类型,人类可读形式

注释:

  • --terse 等效于以下格式:%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
  • --terse --file-system 等效于以下格式:%n %i %l %t %s %S %b %f %a %c %d

注意事项:

您的 shell 可能内置了自己的 stat 程序版本,它会覆盖这里所提及的相应版本。请查阅您的 shell 文档获知它所支持的选项。

三、stat命令的基本使用

3.1 查询文件信息

我们先使用ls命令查询测试文件的基本信息:

代码语言:bash
复制
[root@RockyLinux-server001 ~]# ls -l aa01.txt
-rw-r--r--. 1 root root 0 12月 10 16:14 aa01.txt

使用stat命令查询测试文件的基本信息:

代码语言:bash
复制
[root@RockyLinux-server001 ~]# stat aa01.txt
  文件:aa01.txt
  大小:0         	块:0          IO 块:4096   普通空文件
设备:fd00h/64768d	Inode:201326725   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2024-12-10 16:14:42.188422475 +0800
最近更改:2024-12-10 16:14:42.188422475 +0800
最近改动:2024-12-10 16:14:42.188422475 +0800
创建时间:2024-12-10 16:14:42.188422475 +0800

3.2 查看文件系统状态

要查看文件系统的状态信息,我们可以使用 -f 选项:

代码语言:bash
复制
[root@RockyLinux-server001 ~]# stat -f aa01.txt
  文件:"aa01.txt"
    ID:fd0000000000 文件名长度:255     类型:xfs
块大小:4096       基本块大小:4096
    块:总计:18333696   空闲:17516044   可用:17516044
Inodes: 总计:36700160   空闲:36642165

3.3 使用格式化输出

stat 支持使用 --format (-c) 或 --printf 来定制输出格式。这对于脚本编写非常有用,因为它允许你提取特定的信息。例如,只获取文件的修改时间:

代码语言:bash
复制
[root@RockyLinux-server001 ~]# stat --format=%y aa01.txt
2024-12-10 16:14:42.188422475 +0800
代码语言:bash
复制
[root@RockyLinux-server001 ~]# stat --format="Modify time: %y" aa01.txt
Modify time: 2024-12-10 16:14:42.188422475 +0800

3.4 以简洁形式打印信息

stat -t aa01.txt 命令以简洁格式输出了文件 aa01.txt 的基本信息,包括文件名、大小、设备号、用户和组ID、inode号、时间戳(访问、修改、状态改变及创建时间)、块大小以及SELinux安全上下文。

代码语言:bash
复制
[root@RockyLinux-server001 ~]# stat -t aa01.txt
aa01.txt 0 0 81a4 0 0 fd00 201326725 1 0 0 1733818482 1733818482 1733818482 1733818482 4096 unconfined_u:object_r:admin_home_t:s0

四、注意事项

  1. 使用 stat 命令时确保你有足够的权限访问目标文件或目录,否则可能无法获取完整信息。
  2. stat 的输出可以非常详细,使用 -t--terse 选项可以获得更紧凑、适合脚本处理的输出格式。
  3. 对于符号链接,使用 -L--dereference 选项可以让 stat 显示链接指向的目标文件的状态而非链接本身。
  4. 当你需要自定义输出格式时,利用 --format (-c) 或 --printf 选项可以精确控制显示哪些信息以及它们的排列方式。
  5. 查看文件系统状态而不是单个文件状态时,请使用 -f--file-system 选项。
  6. 注意你的 shell 可能有内置的 stat 命令,这可能会覆盖系统提供的 stat,查阅 shell 文档以了解其特性。
  7. 在多语言环境下运行 stat 时,某些字段如时间戳的格式可能会根据当前 locale 设置而有所不同。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、stat命令 介绍
  • 二、stat命令帮助
    • 2.1 查询帮助信息
    • 2.2 stat命令的帮助解释
  • 三、stat命令的基本使用
    • 3.1 查询文件信息
    • 3.2 查看文件系统状态
    • 3.3 使用格式化输出
    • 3.4 以简洁形式打印信息
  • 四、注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档