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