Спецификатор% T в опции printf команды stat

1383
karthikeyan vijayan

Я хочу знать, что такое спецификатор% T в statопции printf и как он получает значение дескриптора файла, т. Е., Fd, 1 выводится с помощью команды ниже.

команда

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

ouput: 1-> который относится к "дм-1"

Заранее спасибо за любой ответ.

0

1 ответ на вопрос

0
cxw

Этот формат не определяется 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Член полученной структуры имеет незначительное количество устройств, которые могут быть извлечены с несовершеннолетним (3) . Для использования в ваших собственных сценариях, просто используйте, stat(1)как вы делали.

«Какова функциональность спецификатора% T в команде bash printf»: он совершенно не связан с устройствами. Согласно вики bash-хакеров, это текущее время в формате strftime (3) . Вики приводят пример:

$ printf 'This is week %(%U/%Y)T.\n' This is week 52/2010. 
Цель моего вопроса в том, как спецификатор% T может получить этот вывод, и какова функциональность спецификатора% T в команде bash printf karthikeyan vijayan 8 лет назад 0

Похожие вопросы