Linux stat
命令比 ls
命令显示更多细节。下面的文章将向您展示如何在 Linux 中使用 stat
命令。
和 ls
一样,stat
命令有很多选项。这使它成为使用别名的绝佳候选者。这使得使用起来更加方便,您无需记住一组复杂的命令行选项。
了解 Linux 上的 stat 命令
- stat 命令告诉我什么?
- 对多个文件使用 stat
- 符号链接
- 报告简洁
- 自定义输出格式
stat 命令告诉我什么?
看看下面的stat命令:
stat ana.h
我们掌握的信息是:
- 文件:文件的名称。
- 大小:文件大小以字节为单位。
- 块数:存储在硬盘驱动器上所需的文件系统块数。
- IO Block:文件系统块的大小。
- 文件类型:元数据描述的对象类型。
- 设备:设备号为十六进制和十进制。
- inode: inode 数量。这是这个 inode 的 ID 号。
- 链接:此图显示了指向该文件的硬链接数。
- 访问:文件权限以传统的读、写和执行格式显示。
- Uid:所有者的用户 ID 和帐户名。
- Gid:组 ID 和所有者的帐户名。
- 访问:标记访问时间。
- 修改:标记修改时间。这是文件内容最后一次修改的时间。
- 变化:标记变化的时间。这是文件的属性或内容最后一次修改的时间。
- 出生:设置为显示文件的原始创建日期,但在 Linux 中不这样做。
对多个文件使用 stat
要让 stat
一次报告多个文件,请将文件名传递给命令行上的 stat
:
stat ana.h ana.o
要对一组文件使用 stat
,请使用适当的模式。问号 '?' 表示任意单个字符,星号 '*' 表示任意字符串。
使用 stat 报告文件系统
stat
命令可以报告文件系统的状态,以及文件的状态。 -f(文件系统)选项要求 stat
报告文件所在的文件系统。请注意,您还可以将 '/' 之类的目录移动到 stat
而不是文件名。
stat-f ana.c
stat 命令告诉我们:
- 文件:文件的名称。
- ID: 十六进制的文件系统 ID。
- Namelen:文件名允许的最大长度。
- 类型:文件系统类型。
- 块大小:为获得最佳数据传输率而需要读取的数据量。
- 基本块大小:每个文件系统块的大小。
- 块:
- Total:文件系统中所有块的总数。
- Free:文件系统中的空闲块数。
- 可用:普通用户(非 root)可用的空闲块数。
- 索引节点:
- Total:文件系统中的 inode 总数。
- 空闲:文件系统中空 inode 的数量。
符号链接
如果你您在实际上是符号链接的文件上使用 stat
,它将报告该链接。如果您希望 stat 报告链接指向的文件,请使用 -L(取消引用)选项。文件 code.c 是 ana.c 的符号链接。当没有-L 选项时考虑一下:
stat code.c
文件名显示code.c指向(->)ana.c.文件大小只有11字节。没有可用于存储此链接的块。文件类型被列为符号链接。
再次运行命令并添加-L选项:
stat-L code.c
文件的详细显示结果用符号链接表示。但请注意,文件名仍以 code.c 形式提供。这是链接的名称,而不是目标文件。
报告简洁
-t(简洁)选项使统计信息提供简明摘要:
stat-t ana.c
没有给出任何线索。要理解它的含义,在记住字段序列之前,您需要将此输出与完整输出交叉引用。
自定义输出格式
从 stat
获取不同数据集的更好方法是使用自定义格式。有一长串称为格式字符串的标记。这些中的每一个都代表一个数据元素。选择要在输出中包含的内容并创建格式字符串。当您调用 stat
并将格式字符串传递给它时,输出将只包含您请求的数据组件。
接受格式字符串有两种选择--format和--printf.它们的区别是--printf 解释 C 类型的转义序列,它不会自动在输出中添加换行符。
让我们创建一个格式字符串并将其转换为 stat
。使用的格式顺序是 %n 表示文件名,%s 表示文件大小,%F 表示文件类型。在字符串末尾添加一个转义字符串,以确保每个文件都在新行上处理:
"文件 %n 是 %s 个字节,并且是一个 %Fn"
该示例将使用 --printf 选项 将其转换为 stat
。
stat--printf="File %n is %s bytes, and is a %Fn" code.c ana/ana.?
每个文件的报告都列在新行上。
自定义格式允许您访问比标准 stat
输出中包含的更多的数据元素。
如您所见,提取您感兴趣的特定数据元素的空间很大。
评论