`stat` 命令的 printf 选项中的 %T 说明符

`stat` 命令的 printf 选项中的 %T 说明符

我想知道statprintf 选项中的 %T 说明符是什么,以及它如何获取文件描述符值,即 fd,1使用以下命令打印。

命令是

$> echo `stat -L /dev/mapper/VolGroup-LogVol00 --printf="%T\n"`

输出:1--> 涉及“dm-1”

提前感谢任何回复。

答案1

此格式不是由 定义的bash,而是由统计(1)。根据链接的手册页,%T以十六进制形式提供次要设备类型。我没有您的具体配置,但是,例如:

$ ls -l /dev/sda2
brw-rw-rw-  1 <user> <group>   8,   2 Oct  9 10:29 sda2
                               ^    ^
                               |    +-- minor device number
                               +------- major device number
$ stat /dev/sda2 --printf='%T\n'
2      <--- This matches the minor  ^ device number
$

如果您ls -lH /dev/mapper/VolGroup-LogVol00,您应该<something>, 1在输出中看到 -1是次设备号。

编辑回答您的其他问题:

“%T 说明符如何获得该输出”:通过调用统计(2)系统调用。st_rdev结果结构的成员具有次设备号,可以使用以下方法提取轻微(3)。若要在您自己的脚本中使用,请stat(1)像您之前所做的那样使用。

“bash printf 命令中 %T 说明符的功能是什么”:它与设备完全无关。根据bash 黑客维基,它是当前时间,格式如下strftime(3)wiki上给出了一个例子:

$ printf 'This is week %(%U/%Y)T.\n'
This is week 52/2010.

相关内容