Bagaimana saya mendapatkan waktu sejak zaman, dalam milidetik, di terminal OSX?
Setara Linux / Ubuntu adalah date +%s.%N
:
Linux $ date +%s.%N
1403377762.035521859
Yang tidak berfungsi di terminal OSX saya:
OSX $ date +%s.%N
1403377800.N
The date
program OS X berbeda dari coreutils GNU date
Program. Anda dapat menginstal coreutils (termasuk gnu-date), maka Anda akan memiliki versi date
yang mendukung milidetik.
Karena penginstalan dari sumber dapat merepotkan bagi pengguna OS X asli, saya menyarankan Anda untuk menggunakan Homebrew .
Untuk menginstal alat ini menggunakan Homebrew, jalankan oneliner ini di terminal Anda:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew sekarang terinstal (sebaiknya mengikuti saran penginstal setelah instalasi). Sekarang kita akan menginstal coreutils menggunakan brew
.
brew install coreutils
Seperti yang dikatakan dalam instalasi, semua perintah telah diinstal dengan awalan 'g' (mis. Gdate, gcat, gln, dll.). Jika Anda benar-benar perlu menggunakan perintah ini dengan nama normalnya, Anda dapat menambahkan direktori "gnubin" ke PATH Anda ( ~/.bash_profile
) seperti:
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
Anda sekarang dapat berlari
gdate +%s.%N
dan ini akan menampilkan waktu Anda sejak zaman dalam milidetik.
gdate
sudah diinstal di/usr/local/bin/gdate
.date
menjadi GNUdate
(bukan gdate)+%s.%N
format memberikan detik ke presisi nanodetik, bukan milidetik. Setelah saya menggunakan minuman untuk menginstalgdate
, saya memeriksa halaman manual untuk melihat apakah milidetik tersedia. Ini bukan. Itu juga tidak mengatakan bahwa presisi untuk%N
dapat ditentukan, tetapi saya tetap mencobanya. Saya menemukan bahwa perintah untuk mendapatkan detik ke presisi milidetik saja (yaitu, tiga tempat desimal) adalahgdate +%s.%3N
.Di OS X, jalankan saja
date +%s
karena OS X tidak mendukung presisi lebih daridate
keluaran in ini dan kelebihan kelebihan yang tidak didukung oleh representasi internal terpotong ke minus minus.Jika Anda ingin output milidetik, Anda dapat menggunakan perintah berikut, meskipun output hanya dikoreksi dengan menambahkan nol daripada menambahkan presisi karena alasan yang disebutkan di atas. Berikut ini tidak menghasilkan milidetik yang benar pada sistem yang mendukung presisi yang diperlukan.
Sumber untuk perintah di atas: Unix.SE - Cara mendapatkan milidetik sejak zaman Unix
Jika Anda hanya ingin perintah yang menambahkan jumlah nol yang tepat di OS X, Anda dapat menggunakan:
sumber
%-N
, sehingga tidak melakukan apa-apa (dan dapat menyebabkan masalah jika variabel shell$N
diatur). Cukup gunakandate +%s000
(ataudate +%s.000
jika Anda ingin titik desimal).date
perintah OS X hanya lewat%-N
sebagaiN
, itu dapat mengganggu perhitungan. Coba pengaturanN=7000000000000000000
, lalu coba perintah ... Ini adalah kasus yang tidak mungkin dalam praktek, tetapi saya akan merasa lebih aman dengan sesuatu yang tidak bergantung pada lingkungan.solusi ini berfungsi pada macOS.
jika Anda mempertimbangkan untuk menggunakan skrip bash dan memiliki python tersedia, Anda dapat menggunakan kode ini:
Atau tulis
python
skrip langsung:sumber
Perl ada di mana-mana.
sumber