Tempo in millisecondi da epoca nel terminale

34

Come faccio a ottenere il tempo trascorso dall'epoca, in millisecondi, nel terminale OSX?

L'equivalente Linux / Ubuntu è date +%s.%N :

Linux $ date +%s.%N
1403377762.035521859

Che non funziona nel mio terminale OSX:

OSX $ date +%s.%N
1403377800.N
    
posta Adam Matan 21.06.2014 - 21:10
fonte

3 risposte

40

Il programma date in OS X è diverso dal programma coreutils date di GNU. Puoi installare coreutils (incluso gnu-date), quindi avrai una versione di date che supporta i millisecondi.

Poiché l'installazione da origine può essere una seccatura per gli utenti nativi di OS X, ti consiglio di utilizzare Homebrew .

Per installare questi strumenti utilizzando Homebrew esegui questo oneliner nel tuo terminale:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrew è ora installato (è consigliabile seguire i suggerimenti dell'installatore dopo l'installazione). Ora installeremo coreutils usando brew .

brew install coreutils

Come dice l'installazione, tutti i comandi sono stati installati con il prefisso 'g' (ad es. gdate, gcat, gln, etc etc). Se hai davvero bisogno di usare questi comandi con i loro nomi normali, puoi aggiungere una directory "gnubin" al tuo PATH ( ~/.bash_profile ) come:

PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Ora puoi eseguire

gdate +%s.%N

e questo produrrà il tuo tempo dall'epochè in millisecondi.

    
risposta data 21.06.2014 - 22:55
fonte
8

In OS X, esegui solo date +%s poiché OS X non supporta più precisione di questo nell'output di date e qualsiasi precisione eccessiva non supportata dalla rappresentazione interna viene troncata verso il meno infinito.

Se si desidera l'output in millisecondi, è possibile utilizzare il seguente comando, sebbene l'output venga corretto semplicemente aggiungendo zeri anziché aggiungere precisione a causa del motivo sopra menzionato. Quanto segue produce output millisecondi corretti su sistemi che supportano la precisione necessaria.

echo $(($(date +'%s * 1000 + %-N / 1000000')))

Fonte per il comando sopra: Unix.SE - Come per ottenere millisecondi dall'epoca di Unix

Se vuoi solo un comando che aggiunge il giusto numero di zeri in OS X, puoi usare:

date +%s000
    
risposta data 21.06.2014 - 21:13
fonte
3

questa soluzione funziona su macOS.

se consideri l'utilizzo di uno script bash e hai python disponibile, puoi usare questo codice:

#!/bin/bash

python -c 'from time import time; print int(round(time() * 1000))'
    
risposta data 05.02.2018 - 15:32
fonte

Leggi altre domande sui tag