Antworten:
Es ist eine Möglichkeit, die formatierte Zeit durch auszudrücken printf
.
Das Format ist:
%(FORMAT)T
Wo FORMAT
ist definiert durch strftime(3)
.
Um die Epochenzeit (Zeit in Sekunden seit 1970-01-01 00:00:00 UTC) zu erhalten, benötigen wir das strftime(3)
Format %s
:
printf "%(%s)T\n"
Beachten Sie, dass Sie \n
am Ende auch eine neue Zeile hinzufügen müssen, da diese printf
(im Gegensatz zu echo
) nicht standardmäßig hinzugefügt wird.
Beispiel:
$ 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
Der Vollständigkeit halber können Sie auch den date
Befehl in einer ähnlichen strftime(3)
formatierten Weise verwenden, um die Zeit zu ermitteln:
$ 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
Hinweis : Dieses Verhalten ist spezifisch für bash
‚s und ksh
‘ s eingebaute Funktion printf
und funktioniert nicht mit /usr/bin/printf
, csh
und zsh
Einbauten.
printf(1)
Manpage gesehen.
printf
ist ein Builtin hier (obwohl die externe hat das gleiche Verhalten) .. überprüfen help printf
..
printf
Bist du ein Eingebauter?/usr/bin/printf
auf Ubuntu 14.04 gibt einen Fehler:printf: %(: invalid conversion specification
. Wenn Sie verwendenbash
. Versuchen Sie esman bash
mit eingebauter Dokumentation.