OSX 터미널에서 획기적인 시간 (밀리 초)을 어떻게 알 수 있습니까?
리눅스 / 우분투는 date +%s.%N
다음 과 같습니다 :
Linux $ date +%s.%N
1403377762.035521859
OSX 터미널에서 작동하지 않는 항목 :
OSX $ date +%s.%N
1403377800.N
답변
date
OS X 의 프로그램은 GNU의 coreutils date
프로그램 과 다릅니다 . coreutils (gnu-date 포함)를 설치하면 date
밀리 초를 지원 하는 버전이 제공 됩니다.
원시 OS X 사용자에게는 소스에서 설치하는 것이 번거로울 수 있으므로 Homebrew 를 사용하는 것이 좋습니다 .
Homebrew를 사용하여 이러한 도구를 설치하려면 터미널에서이 oneliner를 실행하십시오.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
이제 Homebrew가 설치되었습니다 (설치 후 설치 프로그램의 제안을 따르는 것이 좋습니다). 이제 우리는를 사용하여 coreutils를 설치할 것 brew
입니다.
brew install coreutils
설치에서 알 수 있듯이 모든 명령은 접두사 ‘g'(예 : gdate, gcat, gln 등)로 설치되었습니다. 이 명령을 일반 이름과 함께 사용해야하는 경우 “gnubin”디렉토리를 PATH ( ~/.bash_profile
)에 다음과 같이 추가 할 수 있습니다 .
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
당신은 지금 실행할 수 있습니다
gdate +%s.%N
에포크 이후 시간을 밀리 초 단위로 출력합니다.
답변
OS X에서는 OS X date +%s
가 date
출력 에서 이보다 더 높은 정밀도를 지원하지 않고 내부 표현에서 지원되지 않는 초과 정밀도는 마이너스 무한대로 잘립니다.
밀리 초 출력을 원할 경우 다음 명령을 사용할 수 있지만 위에서 언급 한 이유로 인해 정밀도를 추가하는 대신 0을 추가하여 출력을 수정하면됩니다. 다음은 필요한 정밀도를 지원하는 시스템에서 올바른 밀리 초를 출력합니다.
echo $(($(date +'%s * 1000 + %-N / 1000000')))
위 명령의 소스 : Unix.SE – Unix epoch 이후 밀리 초를 얻는 방법
OS X에서 올바른 수의 0을 추가하는 명령을 원한다면 다음을 사용할 수 있습니다.
date +%s000
답변
이 솔루션은 macOS에서 작동합니다.
bash 스크립트 사용을 고려하고 파이썬을 사용할 수 있다면 다음 코드를 사용할 수 있습니다.
#!/bin/bash
python -c 'from time import time; print int(round(time() * 1000))'
또는 python
스크립트를 직접 작성하십시오 .
#!/usr/bin/python
from time import time
print int(round(time() * 1000))
답변
펄은 어디에나있다.
$ perl -MTime::HiRes=time -e 'printf "%.9f\n", time'
1557390839.244920969