Ich versuche, eine Zeitstempelvariable in einem Shell-Skript zu erstellen, um die Protokollierung ein wenig zu vereinfachen. Ich möchte die Variable am Anfang des Skripts erstellen und sie bei jeder Ausgabe zur aktuellen Zeit ausdrucken lassen echo $timestamp
. Es erwies sich als schwieriger als ich dachte. Hier sind einige Dinge, die ich versucht habe:
timestamp="(date +"%T")"
Echo wird ausgedruckt (date +"%T")
timestamp="$(date +"%T")"
echo gibt die Zeit aus, zu der die Variable initialisiert wurde.
Andere Dinge, die ich ausprobiert habe, sind nur geringfügige Abweichungen, die nicht besser funktionierten. Weiß jemand, wie man das erreicht, was ich versuche?
echo "$(timestamp): something happened"
.date +"%Y-%m-%d_%H-%M-%S"
Wenn Sie einen Unix-Zeitstempel erhalten möchten, müssen Sie Folgendes verwenden:
%T
wird dir nur die Zeit geben; das gleiche wie%H:%M:%S
(über http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ )quelle
date
. Ich habe jedoch auch die "richtige" Antwort positiv bewertet. Ich habe nicht danach gesucht, aber es ist eine bessere Antwort auf die ursprüngliche Frage und es ist auch sehr nützlich für mich.quelle
echo $(date +"%Y-%m-%dT%T.%3N%z")
kann jedoch nicht in einem Mac-Terminal zum Laufen gebracht werden. So machen Sie dasselbe in Mac. DankeDas ISO 8601-Format (
2018-12-23T12:34:56
) ist besser lesbar als der UNIX-Zeitstempel. Auf einigen Betriebssystemen können Sie jedoch keine:
Dateinamen haben. Deshalb empfehle ich stattdessen Folgendes:Mit dem folgenden Befehl können Sie den Zeitstempel in diesem Format abrufen:
Dies ist das Format, das viele Anwendungen verwendet haben. Eine weitere nette Sache dabei ist, dass wenn Ihre Dateinamen damit beginnen, Sie sie alphabetisch sortieren können und sie nach Datum sortiert werden.
quelle
TZ=UTC date +...
kann dies mithilfe des UTC-Zeitstempels portabler machenIch benutze Ubuntu 14.04.
Der richtige Weg in meinem System sollte sein
date +%s
.Die Ausgabe von
date +%T
ist wie12:25:25
.quelle
Befehlssubstitution verwenden:
quelle
Sie können verwenden
Dies liefert im Format
2014-02-01 15:12:35-05:00
Die Back-Tick (
`
) -Zeichen bewirken, dass das, was sich zwischen ihnen befindet, ausgewertet wird und das Ergebnis in der Zeile enthalten ist.date --help
hat andere Möglichkeiten.quelle
touch $timestamp
werden zwei Dateien erzeugt.Neuere Versionen von
bash
erfordern keinen Aufruf des externen Programmsdate
:%(...)T
Verwendet das entsprechende Argument als UNIX-Zeitstempel und formatiert es gemäß demstrftime
Format im Stil zwischen den Klammern. Ein Argument von-1
entspricht der aktuellen Zeit, und wenn keine Mehrdeutigkeit auftreten würde, kann weggelassen werden.quelle
Und für meine europäischen Mitbürger versuchen Sie Folgendes:
gibt ein Format des Formats an: "15-02-2020_19-21-58"
Sie rufen die Variable auf und erhalten die Zeichenfolgendarstellung wie folgt
quelle
srand ohne Wert verwendet den aktuellen Zeitstempel bei den meisten Awk-Implementierungen.
quelle