% T especificador na opção printf do comando 'stat'

0

Eu quero saber o que é o especificador% T na opção stat printf e como ele obtém o valor do descritor de arquivo, por exemplo, fd, 1 é impresso usando o comando abaixo.

o comando é

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

saída: 1 - > que se relaciona com "dm-1"

Agradecemos antecipadamente por qualquer resposta.

    
por karthikeyan vijayan 09.10.2015 / 16:08

1 resposta

0

Este formato não é definido por bash , mas por stat (1) . Pela página do manual vinculada, %T fornece o tipo de dispositivo secundário em hexadecimal. Eu não tenho sua configuração específica, mas, por exemplo:

$ 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
$

Se você for ls -lH /dev/mapper/VolGroup-LogVol00 , deverá ver <something>, 1 na saída - 1 é o menor número de dispositivo.

Editar para responder às suas perguntas adicionais:

"como o especificador de% T pode obter essa saída": chamando a chamada de sistema stat (2) . O membro st_rdev da estrutura resultante possui o menor número de dispositivo, que pode ser extraído com menor (3) . Para usar em seus próprios scripts, use apenas stat(1) como você fez.

"qual é a funcionalidade do especificador% T no comando bash printf": é totalmente não relacionado a dispositivos. Pelo bash hackers 'wiki , é a hora atual, formatada como para strftime (3) . O wiki dá um exemplo:

$ printf 'This is week %(%U/%Y)T.\n'
This is week 52/2010.
    
por 09.10.2015 / 16:32