Apa yang dilakukan perintah "printf" ini?


15

Saya telah melalui tutorial dan saya menemukan sebuah perintah:

printf "%(%s)T"

Output dari perintah ini adalah:

1454299615

Adakah yang bisa memberi tahu saya apa perintah ini dan apa artinya output?


Ini tampaknya tergantung pada shell. Apakah Anda printfseorang builtin? /usr/bin/printfpada Ubuntu 14.04 memberikan kesalahan: printf: %(: invalid conversion specification. Jika Anda menggunakan bash. Coba man bashuntuk dokumentasi bawaan.
arielf

Jawaban:


17

Ini cara untuk mengekspresikan waktu yang diformat printf.

Formatnya adalah:

%(FORMAT)T

Di mana FORMATdidefinisikan oleh strftime(3).

Jadi untuk mendapatkan waktu jaman (Waktu dalam detik sejak 1970-01-01 00:00:00 UTC), kita perlu strftime(3)format %s:

printf "%(%s)T\n"

Perhatikan bahwa \npada akhirnya Anda perlu menambahkan baris baru karena printf(tidak seperti echo) tidak menambahkannya secara default.

Contoh:

$ 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

Hanya demi kelengkapan, Anda juga dapat menggunakan dateperintah dengan strftime(3)cara yang diformat serupa untuk mendapatkan waktu:

$ 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

CATATAN : Perilaku ini khusus untuk bash's dan ksh' s built-in fungsi printf, dan tidak bekerja dengan /usr/bin/printf, cshdan zshbuilt-in.


@rtecxs Saya telah memindahkan hasil edit Anda di tempat yang berbeda hanya untuk membuat semuanya menjadi jelas..terimakasih :)
heemayl

Apakah fitur ini didokumentasikan? Saya tidak melihatnya di printf(1)halaman manual.
Nate Eldredge

@NateEldredge printfadalah builtin di sini (meskipun yang eksternal memiliki perilaku yang sama) .. periksa help printf..
heemayl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.