Спецификатор%T в опции printf команды stat
Я хочу знать, что спецификатор%T в stat
Параметр printf и способ получения значения дескриптора файла, т. е., fd,1, печатаются с помощью приведенной ниже команды.
команда
$> echo `stat -L /dev/mapper/VolGroup-LogVol00 --printf="%T\n"`
Ouput: 1
-> который относится к "дм-1"
Заранее спасибо за любой ответ.
1 ответ
Этот формат не определяется bash
, но по статистике (1). Согласно связанной странице man, %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 смог получить этот вывод": вызвав системный вызов stat(2). st_rdev
Член полученной структуры имеет младший номер устройства, который можно извлечь с помощью младшего (3). Для использования в ваших собственных сценариях, просто используйте stat(1)
как ты делал.
"Какова функциональность спецификатора%T в команде bash printf": он совершенно не связан с устройствами. Согласно вики bash-хакеров, это текущее время в формате strftime (3). Вики приводят пример:
$ printf 'This is week %(%U/%Y)T.\n'
This is week 52/2010.