Câu trả lời:
Đó là một cách để thể hiện thời gian được định dạng bằng printf.
Định dạng là:
%(FORMAT)T
Trường hợp FORMATđược xác định bởi strftime(3).
Vì vậy, để có được thời gian kỷ nguyên (Thời gian tính bằng giây kể từ 1970-01-01 00:00:00 UTC), chúng ta cần strftime(3)định dạng %s:
printf "%(%s)T\n"
Lưu ý rằng bạn cũng cần \nở cuối để thêm một dòng mới vì printf(không giống như echo) không thêm nó theo mặc định.
Thí dụ:
$ 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
Để hoàn thiện, bạn cũng có thể sử dụng datelệnh strftime(3)theo cách được định dạng tương tự để có thời gian:
$ 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
LƯU Ý : Hành vi này là cụ thể cho bash's và ksh' s built-in chức năng printf, và không làm việc với /usr/bin/printf, cshvà zshbuilt-in.
printf(1)trang người đàn ông.
printflà một nội dung dựng sẵn ở đây (mặc dù bên ngoài có hành vi tương tự) .. kiểm tra help printf..
printfmột nội dung của bạn ?/usr/bin/printftrên Ubuntu 14.04 có lỗi :printf: %(: invalid conversion specification. Nếu bạn đang sử dụngbash. Hãy thửman bashtài liệu dựng sẵn.