টার্মিনালে প্রথম যুগ থেকে মিলিসেকেন্ডে সময়


42

ওএসএক্স টার্মিনালে, যুগের পর থেকে আমি মিলিসেকেন্ডে কীভাবে সময় পাব?

লিনাক্স / উবুন্টু সমতুল্য date +%s.%N:

Linux $ date +%s.%N
1403377762.035521859

যা আমার ওএসএক্স টার্মিনালে কাজ করে না:

OSX $ date +%s.%N
1403377800.N

উত্তর:


48

dateOS X এর প্রোগ্রাম গনুহ এর coreutils থেকে ভিন্ন dateপ্রোগ্রাম। আপনি কোর্টিলগুলি ইনস্টল করতে পারেন (gnu- তারিখ সহ), তারপরে আপনার কাছে এমন একটি সংস্করণ থাকবে dateযা মিলিসেকেন্ডগুলিকে সমর্থন করে।

উত্স থেকে ইনস্টলেশনটি স্থানীয় ওএস এক্স ব্যবহারকারীদের জন্য ঝামেলা হতে পারে আমি আপনাকে হোমব্রু ব্যবহার করার পরামর্শ দিচ্ছি ।

হোমব্রিউ ব্যবহার করে এই সরঞ্জামগুলি ইনস্টল করতে আপনার টার্মিনালে এই অনিলিনারটি চালান:

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

হোমব্রিউ এখন ইনস্টল করা আছে (ইনস্টলেশনের পরে ইনস্টলারের পরামর্শ অনুসরণ করা বুদ্ধিমানের কাজ)। এখন আমরা ব্যবহার করে কোর্টিল ইনস্টল করব brew

brew install coreutils

ইনস্টলেশনটি যেমন বলেছে, সমস্ত কমান্ডগুলি 'g' উপসর্গের সাথে ইনস্টল করা হয়েছে (উদাঃ gdate, gcat, gln, ইত্যাদি)। আপনার যদি এই কমান্ডগুলি তাদের সাধারণ নামগুলির সাথে ব্যবহার করতে প্রয়োজন হয়, আপনি আপনার PATH ( ~/.bash_profile) এর মতো একটি "gnubin" ডিরেক্টরি যুক্ত করতে পারেন:

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

আপনি এখন চালাতে পারেন

gdate +%s.%N

এবং এটি মিলিসেকেন্ডে সূচনাকালীন আপনার সময় আউটপুট দেবে।


3
খুশী হলাম। আমাকে এমনকি পথ জুড়তে হয়নি, gdateইনস্টল করা হয়েছিল /usr/local/bin/gdate
আদম মাতান

এটাই তুমি আশা করবে সমস্ত বাইনারি জি উপসর্গ দিয়ে ইনস্টল করা আছে। আমি যে পথটি দিয়েছি সেগুলিতে সমস্ত একই ধরণের gnu-coreutils g উপসর্গ ছাড়াই। সুতরাং আপনি যদি এটিকে আপনার পথে যোগ করেন যেমন PATH = "/ usr / স্থানীয় / অপ্ট / কোর্টিলস / লিবেক্সেক / গনুবিন: $ PATH" এটি আসলগুলিকে প্রতিস্থাপন করবে। সুতরাং ওএস এক্স জিএনইউতে dateপরিণত হয়েছে date(গ্যাডেটের পরিবর্তে)
কাজিনকোকেইন

সূক্ষ্ম যে এটি কাজ করে।
কাজিনকোচেন

3
প্রযুক্তিগতভাবে, +%s.%Nবিন্যাসটি সেকেন্ডগুলিকে ন্যানোসেকেন্ডের যথার্থতার জন্য দেয়, মিলিসেকেন্ডগুলিতে নয়। আমি ইনস্টল করার জন্য ব্রিউ ব্যবহার করার পরে gdate, মিলিসেকেন্ডগুলি উপলব্ধ কিনা তা দেখার জন্য আমি ম্যানপেজটি পরীক্ষা করেছিলাম। এটা না। এটি এও বলেনি যে একটি নির্ভুলতা %Nনির্দিষ্ট করা যেতে পারে তবে আমি তা যাইহোক চেষ্টা করেছিলাম। আমি দেখেছি যে কমান্ড মিলিসেকেন্ডে স্পষ্টতা শুধুমাত্র (অর্থাত, তিন দশমিক স্থান) হল নিচে সেকেন্ড পেতে gdate +%s.%3N
এলএস

10

ওএস এক্স-তে কেবল চালিত করুন date +%sযেমন ওএস এক্স dateএর আউটপুটে এর চেয়ে বেশি নির্ভুলতার পক্ষে সমর্থন করে না এবং অভ্যন্তরীণ উপস্থাপনার দ্বারা সমর্থিত কোনও অতিরিক্ত নির্ভুলতা বিয়োগ অনন্তের দিকে কেটে যায়।

যদি আপনি মিলি সেকেন্ড আউটপুট চান, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন, যদিও আউটপুটটি পূর্বোক্ত কারণে সুনির্দিষ্টতা যোগ করার পরিবর্তে জিরো যুক্ত করে সঠিক করা হয়েছে। নিম্নলিখিতগুলিতে সিস্টেমগুলিতে সঠিক মিলিসেকেন্ডগুলি আউটপুট দেয় যা প্রয়োজনীয় নির্ভুলতা সমর্থন করে।

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

উপরের কমান্ডের উত্স: ইউনিক্স.এসই - ইউনিক্সের সূচনালগ্ন থেকে মিলিসেকেন্ডগুলি কীভাবে পাবেন

আপনি যদি কেবল একটি কমান্ড চান যা ওএস এক্স-তে সঠিক সংখ্যাটি শেরো সংযুক্ত করে, আপনি এটি ব্যবহার করতে পারেন:

date +%s000

ওএস এক্স সমর্থন করে না %-N, যাতে এটি কিছুই করে না (এবং শেল ভেরিয়েবলটি $Nসেট করা থাকলে সমস্যা হতে পারে )। কেবল ব্যবহার করুন date +%s000(বা date +%s.000আপনি যদি দশমিক পয়েন্ট চান)।
গর্ডন ডেভিসন

@ গর্ডন হ্যাঁ, আমি এটি উল্লেখ করেছি, তবে ওপি যদি কোনও পোর্টেবল সমাধানের সন্ধান করে যা সেই নির্ভুলতার জন্য সক্ষম সিস্টেমগুলিতে সফলভাবে কাজ করে, উপরের কমান্ডটি কাজ করে। অবশ্যই আপনি আউটপুটে কেবল জিরো সংযোজন করতে পারতেন কিন্তু অতিরিক্ত সিস্টেমের সাথে এটি অনুলিপি করা যা অতিরিক্ত নির্ভুলতা সমর্থন করতে পারে আদর্শ নয়।
grg

আহ আমি দেখি. তবে যেহেতু ওএস এক্স-এর dateকমান্ডটি কেবল এর মধ্য %-Nদিয়ে চলেছে N, এটি গণনায় হস্তক্ষেপ করতে পারে। সেটিং চেষ্টা করুন N=7000000000000000000, তারপরে কমান্ডটি চেষ্টা করুন ... এটি অনুশীলনের ক্ষেত্রে একটি অসম্ভব ঘটনা তবে পরিবেশের উপর নির্ভর করে না এমন কিছু বিষয় নিয়ে আমি নিজেকে নিরাপদ বোধ করব।
গর্ডন ডেভিসন

@ গর্ডন প্রকৃতপক্ষে, ভেরিয়েবলটি সেট করা এটি ভেঙে ফেলবে — আমি মনে করি যে নির্দিষ্ট ভেরিয়েবলটি কমান্ডটি চালানোর ঠিক আগে পুনরায় সেট করা যেতে পারে, তবে এর মতো ভেরিয়েবলগুলি পুনরায় সেট করা হ'ল কমান্ড চালানোর আগে প্রতিটি ভাল স্ক্রিপ্টকে কিছু করা উচিত, ঠিক তেমনি ক্ষেত্রে। অবশ্যই এটি আমার ধারণার উপর ভিত্তি করে যে ওপি একটি স্ক্রিপ্ট-সম্পাদিত উত্তর চায় জিরোদের আক্ষরিক সংযোজন অন্তর্ভুক্ত করতে।
grg

2
ওপি "যুগের আগে থেকে মিলিসেকেন্ডে" জিজ্ঞাসা করেছিল, এটি একটি স্ট্রিংয়ে শূন্যকে কীভাবে যুক্ত করতে হবে তার একটি উত্তর। একই নয়. যদিও পোস্টে ব্যাখ্যা করা হয়েছে, প্রশ্নের উত্তর নয়।
মামাতো ভাই কোকেন

6

এই সমাধানটি ম্যাকোজে কাজ করে।

আপনি যদি ব্যাশ স্ক্রিপ্টটি ব্যবহার করে বিবেচনা করেন এবং পাইথন উপলব্ধ থাকে তবে আপনি এই কোডটি ব্যবহার করতে পারেন:

#!/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)) 

4

পার্ল সর্বব্যাপী।

$ perl -MTime::HiRes=time -e 'printf "%.9f\n", time'
1557390839.244920969
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.