我想知道stat
printf 选项中的 %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.