Wie erhalte ich die Zeit seit der Epoche in Millisekunden im OSX-Terminal?
Das Linux / Ubuntu-Äquivalent ist date +%s.%N
:
Linux $ date +%s.%N
1403377762.035521859
Was in meinem OSX-Terminal nicht funktioniert:
OSX $ date +%s.%N
1403377800.N
Das date
Programm in OS X unterscheidet sich von GNUs coreutils- date
Programm. Sie können coreutils (einschließlich gnu-date) installieren, dann haben Sie eine Version date
, die Millisekunden unterstützt.
Da die Installation aus dem Quellcode für native OS X-Benutzer problematisch sein kann, rate ich Ihnen, Homebrew zu verwenden .
Um diese Tools mit Homebrew zu installieren, führen Sie diesen Oneliner in Ihrem Terminal aus:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew ist jetzt installiert (es ist ratsam, den Vorschlägen des Installateurs nach der Installation zu folgen). Jetzt installieren wir coreutils mit brew
.
brew install coreutils
Wie in der Installation angegeben, wurden alle Befehle mit dem Präfix 'g' installiert (z. B. gdate, gcat, gln usw. usw.). Wenn Sie diese Befehle wirklich mit ihren normalen Namen verwenden müssen, können Sie Ihrem PATH ( ~/.bash_profile
) ein "gnubin" -Verzeichnis hinzufügen :
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
Du kannst jetzt rennen
gdate +%s.%N
und dies gibt Ihre Zeit seit der Epoche in Millisekunden aus.
gdate
wurde in installiert/usr/local/bin/gdate
.date
GNUdate
(anstelle von gdate)+%s.%N
Format die Sekunden auf Nanosekunden genau an, nicht auf Millisekunden. Nachdem ich die Installation mit brew durchgeführt hattegdate
, überprüfte ich auf der Manpage, ob Millisekunden verfügbar waren. Es ist nicht. Es wurde auch nicht gesagt, dass eine Genauigkeit für%N
angegeben werden könnte, aber ich habe es trotzdem versucht. Ich stellte fest, dass der Befehl, die Sekunden auf Millisekunden genau zu bringen (dh drei Dezimalstellen), lautetgdate +%s.%3N
.In OS X wird nur ausgeführt,
date +%s
weil OS X keine höhere Genauigkeit als die indate
der Ausgabe unterstützte unterstützt. Übermäßige Genauigkeit, die von der internen Darstellung nicht unterstützt wird, wird in Richtung minus unendlich abgeschnitten.Wenn Sie eine Millisekunden-Ausgabe wünschen, können Sie den folgenden Befehl verwenden, obwohl die Ausgabe nur durch das Anhängen von Nullen korrigiert wird, anstatt aus dem oben genannten Grund die Genauigkeit zu erhöhen. Das Folgende gibt korrekte Millisekunden auf Systemen aus, die die erforderliche Präzision unterstützen.
Quelle für obigen Befehl: Unix.SE - Wie man Millisekunden seit der Unix-Epoche abruft
Wenn Sie nur einen Befehl benötigen, der die richtige Anzahl von Nullen in OS X anfügt, können Sie Folgendes verwenden:
quelle
%-N
dies nicht und kann daher Probleme verursachen, wenn die Shell-Variable gesetzt$N
ist. Verwenden Sie einfachdate +%s000
(oderdate +%s.000
wenn Sie den Dezimalpunkt möchten).date
Befehl jedoch nur%-N
as durchläuftN
, kann die Berechnung beeinträchtigt werden. Versuchen Sie es mit der EinstellungN=7000000000000000000
und dann mit dem Befehl ... In der Praxis ist dies ein unwahrscheinlicher Fall, aber ich würde mich mit etwas sicherer fühlen, das nicht von der Umgebung abhängt.Diese Lösung funktioniert unter MacOS.
Wenn Sie ein Bash-Skript verwenden und Python zur Verfügung haben, können Sie diesen Code verwenden:
Oder schreiben Sie ein
python
Skript direkt:quelle
Perl ist allgegenwärtig.
quelle