Como obtenho tempo desde a época, em milissegundos, no terminal OSX?
O equivalente Linux / Ubuntu é date +%s.%N
:
Linux $ date +%s.%N
1403377762.035521859
O que não funciona no meu terminal OSX:
OSX $ date +%s.%N
1403377800.N
O date
programa no OS X é diferente do date
programa coreutils do GNU . Você pode instalar o coreutils (incluindo o gnu-date) e, em seguida, terá uma versão date
que suporta milissegundos.
Como a instalação da fonte pode ser um aborrecimento para usuários nativos do OS X, aconselho que você use o Homebrew .
Para instalar essas ferramentas usando o Homebrew, execute este oneliner no seu terminal:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
O Homebrew está agora instalado (é aconselhável seguir as sugestões do instalador após a instalação). Agora vamos instalar o coreutils usando brew
.
brew install coreutils
Como a instalação diz, todos os comandos foram instalados com o prefixo 'g' (por exemplo, gdate, gcat, gln, etc etc). Se você realmente precisar usar esses comandos com seus nomes normais, poderá adicionar um diretório "gnubin" ao seu PATH ( ~/.bash_profile
) como:
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
Agora você pode executar
gdate +%s.%N
e isso produzirá seu tempo desde a época em milissegundos.
gdate
fui instalado no/usr/local/bin/gdate
.date
torna-se GNUdate
(em vez de gdate)+%s.%N
formato reduz os segundos à precisão de nanossegundos, não a milissegundos. Depois que usei o brew para instalargdate
, verifiquei a página de manual para ver se havia milissegundos disponíveis. Não é. Também não disse que uma precisão para%N
pudesse ser especificada, mas tentei mesmo assim. Descobri que o comando para reduzir os segundos à precisão de milissegundos (ou seja, três casas decimais) égdate +%s.%3N
.No OS X, basta executar,
date +%s
pois o OS X não suporta mais precisão do que isso nadate
saída e qualquer excesso de precisão não suportado pela representação interna é truncado para menos infinito.Se você deseja uma saída em milissegundos, pode usar o comando a seguir, embora a saída seja apenas corrigida acrescentando zeros em vez de adicionar precisão devido ao motivo mencionado acima. A seguir, a saída corrige milissegundos em sistemas que suportam a precisão necessária.
Fonte para o comando acima: Unix.SE - Como obter milissegundos desde a época do Unix
Se você deseja apenas um comando que acrescente o número certo de zeros no OS X, você pode usar:
fonte
%-N
, portanto, isso não faz nada (e pode causar problemas se a variável shell$N
estiver definida). Basta usardate +%s000
(oudate +%s.000
se você quiser o ponto decimal).date
comando do OS X passa apenas%-N
comoN
, ele pode interferir no cálculo. Tente definirN=7000000000000000000
, depois tente o comando ... Este é um caso improvável na prática, mas me sentiria mais seguro com algo que não dependesse do ambiente.Esta solução funciona no macOS.
se você considerar usar um script bash e tiver python disponível, poderá usar este código:
Ou escreva um
python
script diretamente:fonte
Perl é onipresente.
fonte