Спецификатор%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.
Другие вопросы по тегам