众所周知,Linux 下一切皆文件。当我们想要去查看某个文件的具体信息时,可以使用 stat
命令进行查看。
stat filename [filename...]
以 stat /home
为例,以下为我电脑的输出结果:
文件:/home
大小:4096 块:8 IO 块:4096 目录
设备:815h/2069d Inode:15204353 硬链接:5
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-06-12 15:24:19.791590697 +0800
最近更改:2021-01-14 13:22:37.236297689 +0800
最近改动:2021-01-14 13:22:37.236297689 +0800
创建时间:2020-04-12 02:04:12.604134012 +0800
File: /home
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 815h/2069d Inode: 15204353 Links: 5
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-06-12 15:24:19.791590697 +0800
Modify: 2021-01-14 13:22:37.236297689 +0800
Change: 2021-01-14 13:22:37.236297689 +0800
Birth: 2020-04-12 02:04:12.604134012 +0800
可以看到,stat
命令能够查询到文件的信息有:
字段 | 说明 |
---|---|
File | 文件名 |
Size | 文件大小 |
Blocks | 文件占用的物理磁盘块数目 |
IO Block | 文件系统进行 IO 操作的块大小 |
directory/regular file/symbolic link | 文件类型 |
Device | 设备编号 |
Inode | 文件 Inode 号 |
Links | 当前文件的硬链接数 |
Access | 文件的权限 |
Uid | 文件的 uid,表示文件的所有者 |
Gid | 文件的 gid,表示文件的所有组 |
Access | 文件的最近访问时间 |
Modify | 文件的最近更改时间 |
Change | 文件的最近改动时间 |
Birth | 文件的创建时间 |
以上述例子为例,815h
表示十六进制结果,即 0x0815
;2069d
表示十进制结果。0x0815
中,0x08
表示设备主编号,一般取决于设备类型,对于磁盘分区等块设备,一般主编号就是 0x08
;0x15
表示设备从编号,这里就是表示此系统上的第 0x15
个块设备。可以查看 ls -l /dev/block
,按照字母顺序排序,其中第 0x15
个设备便是本系统的磁盘分区。
【注】/dev
目录下除了包含块设备,也还有其他类型的设备,比如 CPU 设备等。
文件的硬链接数表示访问到该文件的方式数目,普通文件的硬链接数一般为 1,目录文件的硬链接数至少为 2。
.
目录,通过 cd .
可以访问到该目录,因此至少为 2。cd ..
访问父目录。选项 | 说明 |
---|---|
-L、--dereference | 显示符号链接所指向文件的信息 |
-f、--file-system | 展示文件系统的状态信息而不是文件的状态信息 |
-c、--format=FORMAT | 指定格式输出文件的某些状态信息 |
-t、--terse | 以简洁形式输出文件的状态信息 |
--cached=MODE | 使用属性信息缓存的方式 |
--printf=FORMAT | 类似 --format 选项,结尾无换行符,可以使用转义字符实现换行等操作 |
MODE
取值范围:always
、never
、default
。always
表示如果存在缓存信息则使用缓存信息;never
表示不使用缓存信息,并将最新属性信息同步到缓存;default
表示默认方式,取决于文件系统。FORMAT
选项对于文件和文件系统的取值是不同的:FORMAT
可选选项如下表所示:【注】文件信息的简洁模式等价于输出格式:%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o
。
FORMAT
可选选项如下表所示:【注】文件系统信息的简洁模式等价于输出格式:%n %i %l %t %s %S %b %f %a %c %d
。
参考资料: