O que esse comando “printf” faz?

15

Eu estava passando por um tutorial e lá me deparei com um comando:

printf "%(%s)T"

A saída deste comando é:

1454299615

Alguém poderia me dizer o que é esse comando e o que significa o resultado?

    
por rtecxs 01.02.2016 / 05:08

1 resposta

17

É uma maneira de expressar o tempo formatado em printf .

O formato é:

%(FORMAT)T

Em que FORMAT é definido por strftime(3) .

Então, para obter o horário da época (Tempo em segundos desde 1970-01-01 00:00:00 UTC), precisamos de strftime(3) format %s :

printf "%(%s)T\n"

Observe que você também precisa de \n no final para adicionar uma nova linha, já que printf (ao contrário de echo ) não a adiciona por padrão.

Exemplo:

$ printf "%(%s)T\n"
1454300377

$ printf "%(%Y-%m-%d)T\n"
2016-02-01

$ printf "%(%Y-%m-%d %H:%M:%S)T\n"
2016-02-01 10:20:27

Apenas por questão de integridade, você também pode usar o comando date de maneira semelhante em strftime(3) para obter o tempo:

$ date '+%s'
1454300542

$ date '+%Y-%m-%d'    ## Short form: date -I
2016-02-01

$ date '+%Y-%m-%d %H:%M:%S'
2016-02-01 10:22:47

OBSERVAÇÃO : esse comportamento é específico da função incorporada bash e ksh printf e não funciona com /usr/bin/printf , csh , e zsh internos.

    
por heemayl 01.02.2016 / 05:18