Odpowiedzi:
Jest to sposób wyrażenia sformatowanego czasu printf.
Format to:
%(FORMAT)T
Gdzie FORMATjest zdefiniowany przez strftime(3).
Aby uzyskać czas epoki (czas w sekundach od 1970-01-01 00:00:00 UTC), potrzebujemy strftime(3)formatu %s:
printf "%(%s)T\n"
Pamiętaj, że \nna końcu musisz również dodać nowy wiersz, ponieważ printf(w przeciwieństwie do echo) domyślnie go nie dodaje.
Przykład:
$ 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
Ze względu na kompletność możesz również użyć datepolecenia w podobny strftime(3)sformatowany sposób, aby uzyskać czas:
$ 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
UWAGA : Takie zachowanie jest charakterystyczne dla bash„s i ksh” s wbudowaną funkcję printf, a nie działa /usr/bin/printf, cshi zshZabudowy.
printf(1)stronie podręcznika .
printfjest tu wbudowany (chociaż zewnętrzny ma to samo zachowanie) .. sprawdź help printf..
printfwbudowany?/usr/bin/printfUbuntu 14.04 daje błąd:printf: %(: invalid conversion specification. Jeśli używaszbash. Wypróbujman bashwbudowaną dokumentację.