क्या टर्मिनल में उलटी गिनती या स्टॉपवॉच टाइमर प्रदर्शित करने का एक तरीका है?


144

मैं लिनक्स टर्मिनल पर वास्तविक समय उलटी गिनती घड़ी कैसे प्रदर्शित कर सकता हूं? क्या ऐसा करने के लिए एक मौजूदा ऐप या, इससे भी बेहतर, एक लाइनर है?

जवाबों:


184

मुझे यकीन नहीं है कि आपको क्यों ज़रूरत है beep, अगर आप चाहते हैं कि एक स्टॉपवॉच है, तो आप यह कर सकते हैं:

while true; do echo -ne "`date`\r"; done

यह आपको वास्तविक समय में गुजरने वाले सेकंड दिखाएगा और आप इसे Ctrl+ के साथ रोक सकते हैं C। यदि आपको अधिक सटीकता की आवश्यकता है, तो आप इसका उपयोग आपको नैनोसेकंड देने के लिए कर सकते हैं:

while true; do echo -ne "`date +%H:%M:%S:%N`\r"; done

अंत में, यदि आप वास्तव में, वास्तव में "स्टॉपवॉच प्रारूप" चाहते हैं, जहां सब कुछ 0 पर शुरू होता है और बढ़ना शुरू होता है, तो आप इस तरह से कुछ कर सकते हैं:

date1=`date +%s`; while true; do 
   echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done

एक उलटी गिनती घड़ी के लिए (जो कि आपके मूल प्रश्न के लिए नहीं पूछा गया है) आप ऐसा कर सकते हैं (तदनुसार सेकंड बदलें)

seconds=20; date1=$((`date +%s` + $seconds)); 
while [ "$date1" -ge `date +%s` ]; do 
  echo -ne "$(date -u --date @$(($date1 - `date +%s` )) +%H:%M:%S)\r"; 
done

आप इन्हें साधारण कमांड में बैश (या जो भी शेल आप चाहें) का उपयोग करके जोड़ सकते हैं। बैश में, इन पंक्तियों को अपने साथ जोड़ें ~/.bashrc( sleep 0.1प्रत्येक रन के बीच सेकंड के 1/10 वें के लिए सिस्टम को प्रतीक्षा करेगा ताकि आप अपने सीपीयू को स्पैम न करें):

function countdown(){
   date1=$((`date +%s` + $1)); 
   while [ "$date1" -ge `date +%s` ]; do 
     echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";
     sleep 0.1
   done
}
function stopwatch(){
  date1=`date +%s`; 
   while true; do 
    echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r"; 
    sleep 0.1
   done
}

फिर आप रनिंग के द्वारा एक मिनट का काउंटडाउन टाइमर शुरू कर सकते हैं:

countdown 60

आप दो घंटे की उलटी गिनती कर सकते हैं:

countdown $((2*60*60))

या पूरे दिन का उपयोग कर:

countdown $((24*60*60))

और स्टॉपवॉच को चालू करके शुरू करें:

stopwatch

यदि आपको घंटों, मिनटों और सेकंड्स के साथ-साथ दिनों का सामना करने में सक्षम होने की आवश्यकता है, तो आप कुछ ऐसा कर सकते हैं:

countdown(){
    date1=$((`date +%s` + $1));
    while [ "$date1" -ge `date +%s` ]; do 
    ## Is this more than 24h away?
    days=$(($(($(( $date1 - $(date +%s))) * 1 ))/86400))
    echo -ne "$days day(s) and $(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r"; 
    sleep 0.1
    done
}
stopwatch(){
    date1=`date +%s`; 
    while true; do 
    days=$(( $(($(date +%s) - date1)) / 86400 ))
    echo -ne "$days day(s) and $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
    sleep 0.1
    done
}

ध्यान दें कि stopwatchफ़ंक्शन का दिनों के लिए परीक्षण नहीं किया गया है क्योंकि मैं वास्तव में इसके लिए 24 घंटे इंतजार नहीं करना चाहता था। यह काम करना चाहिए, लेकिन कृपया मुझे बताएं कि क्या यह नहीं है।


9
मैंने .zshrcआपके उत्तर पढ़ने के बाद इन अच्छे कार्यों को अपने अधिकार में जोड़ लिया । आज मैंने countdownपहली बार उपयोग किया और उच्च CPU उपयोग पर ध्यान दिया। मैंने एक जोड़ा sleep 0.1(मुझे नहीं पता कि एक फ्रैक्शनल सेकंड की नींद का समय सभी प्रणालियों पर समर्थित है) जिसने बहुत सुधार किया। दोष बेशक एक कम सटीक प्रदर्शन सटीकता है, लेकिन मैं अधिकतम के विचलन के साथ रह सकता हूं। 100ms।
MPY

@ मेरा उल्लेख करने के लिए धन्यवाद। जब इस में क्या कर रहा ~ 3% CPU उपयोग हो रही है bash, मैं उस के साथ रह सकते हैं (हालांकि यह है उच्च मेरी अपेक्षा से और मैं भी मेरे अपने .bashrc को नींद जोड़ लिया है)।
टेराडॉन

3
बस यही जवाब मिला। मैंने स्टॉपवॉच फंक्शन में इको स्टेटमेंट की शुरुआत में कैरिज रिटर्न डालते हुए पाया कि यह स्टॉपवॉच को मारने का मतलब है कि स्टॉपवॉच को मारना वर्तमान स्टॉपवॉच के समय को अधिलेखित नहीं करना था: इको-एन "$ (तारीख -u --date @ $ (( date +%s- $ date1)) +% H:% M:% S) ";
मैकिंगटन

3
@chishaku: ओएस एक्स पर, यह मेरे लिए काम करने लगा: echo -ne "$(date -ju -f %s $(($date1 - तारीख +% s )) +%H:%M:%S)\r";
user1071847

1
Sox पैकेज के साथ मैं उलटी गिनती के अंत में खेलने के लिए एक अच्छी ध्वनि जोड़ूंगा play -q -n synth 2 pluck C5:।
पाब्लो ए

94

मेरा पसंदीदा तरीका है:

शुरू:

time cat

रुकें:

ctrl+c

जैसा कि @wjandrea ने नीचे टिप्पणी की, एक और संस्करण चलाना है:

time read

और Enterरोकने के लिए दबाएँ



8
समान, लेकिन आप इसे रोकने के लिए Enter दबा सकते हैं:time read
wjandrea

10
time readzsh में विफल रहता है, लेकिन time (read)काम करता है।
स्पार्कहॉक

समस्या यह है कि आप इसे रद्द किए बिना या इसे खत्म किए बिना समय नहीं देख सकते। जब आप इसे फिर से शुरू करते हैं, तो टाइमर नए सिरे से शुरू होता है।
ज़ेलफिर कल्टस्टाल

38

मैं उसी चीज़ की तलाश में था और पायथन में कुछ और विस्तृत लिखना समाप्त कर दिया:

यह आपको एक सरल 10-सेकंड उलटी गिनती देगा:

sudo pip install termdown
termdown 10

स्रोत: https://github.com/trehn/termdown


1
@DoktoroReichard: खैर, यह एक डाउनलोड लिंक है।
harrymc

1
@ शुहाब: यह मेरे लिए करना चाहिए। कृपया अधिक जानकारी के साथ GitHub पर एक मुद्दा उठाएं।
ट्रैन

1
मैं इसे प्यार करता हूँ - यह ठीक है मेरी गली
वेन वर्नर

1
बहुत अच्छा, मुझे ASCII पसंद है
गिलर्मो

1
यह वास्ताव में अच्छा है! 😄
orschiro

13

मैंने इसका उपयोग किया है:

countdown()
(
  IFS=:
  set -- $*
  secs=$(( ${1#0} * 3600 + ${2#0} * 60 + ${3#0} ))
  while [ $secs -gt 0 ]
  do
    sleep 1 &
    printf "\r%02d:%02d:%02d" $((secs/3600)) $(( (secs/60)%60)) $((secs%60))
    secs=$(( $secs - 1 ))
    wait
  done
  echo
)

उदाहरण:

 countdown "00:07:55"

यहाँ एक स्रोत है


2
POSIX अनुरूप - OS X पर काम करता है :)
djule5

13
sh-3.2# man leave

15 मिनट के लिए टाइमर सेट करें

sh-3.2# leave +0015
Alarm set for Thu Nov  3 14:19:31 CDT 2016. (pid 94317)
sh-3.2#

संपादित करें: मेरे पास लिंक का एक गुच्छा खुला था, और मुझे लगा कि यह ओएक्स के लिए विशिष्ट था, इसके बारे में क्षमा करें। मेरे जवाब को छोड़ दें तो दूसरों को बीएसडी पर छुट्टी के बारे में पता है।


1
लिनक्स में भी काम छोड़ देता है, लेकिन पहले आपको डिफ़ॉल्ट रिपॉजिटरी से छुट्टी कार्यक्रम स्थापित करना होगा।
कारेल

6

यह स्टॉपवॉच सेकंड के सौवें हिस्से के लिए है:

#!/usr/bin/awk -f
function z() {
  getline < "/proc/uptime"
  close("/proc/uptime")
  return $0
}
BEGIN {
  x = z()
  while (1) {
    y = z()
    printf "%02d:%05.2f\r", (y - x) / 60, (y - x) % 60
  }
}

उदाहरण


अच्छा लिनक्स केवल समाधान! मुझे बाहरी कॉल की कमी पसंद है। ध्यान दें, मेरे डेबियन सिस्टम में दो मूल्य / खरीद / अपटाइम हैं, दूसरा मेरे पिछले अपटाइम का जिक्र है। इस स्क्रिप्ट को उस उपाय से समायोजित किया जा सकता है जो return $1
एडम काट्ज

4

मैंने बहुत अच्छे टेर्डन के उत्तर को फंक्शन में संयोजित किया है, जो एक ही समय में शुरू होने के बाद से, और अंत तक के समय को प्रदर्शित करता है। वहाँ भी तीन वेरिएंट हैं इसलिए यह कॉल करना आसान है (आपको गणित को करने की ज़रूरत नहीं है), और यह भी सार है। उपयोग का उदाहरण :

{ ~ }  » time_minutes 15
Counting to 15 minutes
Start at 11:55:34     Will finish at 12:10:34
     Since start: 00:00:08     Till end:  00:14:51

और काम टाइमर की तरह कुछ:

{ ~ }  » time_hours 8
Counting to 8 hours
Start at 11:59:35   Will finish at 19:59:35
     Since start: 00:32:41     Till end:  07:27:19

और अगर आपको कुछ बहुत विशिष्ट समय की आवश्यकता है:

{ ~ }  » time_flexible 3:23:00
Counting to 3:23:00 hours
Start at 12:35:11   Will finish at 15:58:11
     Since start: 00:00:14     Till end:  03:22:46

यहाँ कोड को अपने .bashrc में डालना है

function time_func()
{
   date2=$((`date +%s` + $1));
   date1=`date +%s`;
   date_finish="$(date --date @$(($date2)) +%T )"

   echo "Start at `date +%T`   Will finish at $date_finish"

    while [ "$date2" -ne `date +%s` ]; do
     echo -ne "     Since start: $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)     Till end:  $(date -u --date @$(($date2 - `date +%s`)) +%H:%M:%S)\r";
     sleep 1
    done

    printf "\nTimer finished!\n"
    play_sound ~/finished.wav
}

function time_seconds()
{
  echo "Counting to $1 seconds"
  time_func $1
}

function time_minutes()
{
  echo "Counting to $1 minutes"
  time_func $1*60
}

function time_hours()
{
  echo "Counting to $1 hours"
  time_func $1*60*60
}

function time_flexible()  # accepts flexible input hh:mm:ss
{
    echo "Counting to $1"
    secs=$(time2seconds $1)
    time_func $secs
}

function play_sound()  # adjust to your system
{
    cat $1 > /dev/dsp
}

function time2seconds() # changes hh:mm:ss to seconds, found on some other stack answer
{ 
    a=( ${1//:/ }) 
    echo $((${a[0]}*3600+${a[1]}*60+${a[2]})) 
}

इसे लिनक्स टर्मिनल ( प्ले कमांड एमपी 3 या लिनक्स कमांड लाइन के माध्यम से फाइल करें ) या साइबरविन ( बाबुन / win7 में मेरे लिए काम करता है ) में ध्वनि बजाने के कुछ तरीके से मिलाएं और आपके पास अलार्म के साथ एक सरल लचीला टाइमर है !cat /path/foo.wav > /dev/dsp


4

एक और दृष्टिकोण

countdown=60 now=$(date +%s) watch -tpn1 echo '$((now-$(date +%s)+countdown))'

मैक के लिए:

countdown=60 now=$(date +%s) watch -tn1 echo '$((now-$(date +%s)+countdown))'
#no p option on mac for watch

यदि कोई शून्य को हिट करता है, तो कोई भी ऐसा संकेत चाहता है, उदाहरण के लिए, इसे एक ऐसी कमांड के साथ बनाया जा सकता है, जो शून्य पर एक शून्य-शून्य निकास स्थिति लौटाए और इसके साथ watch -b, या कुछ और मिलाए , लेकिन यदि कोई अधिक विस्तृत स्क्रिप्ट बनाना चाहता है, तो यह संभवतः है जाने का रास्ता नहीं; यह एक "त्वरित और गंदा वन-लाइनर" प्रकार का समाधान है।


मुझे watchकार्यक्रम सामान्य रूप से पसंद है। मैंने पहली बार इसे देखा था जब मैंने पहले से ही while sleep 5; doविभिन्न प्रभावों के लिए अनगिनत छोरों को लिखा था । watchनिशाचर था।


3

मैंने अपनी खुद की शेल स्क्रिप्ट लिखनी शुरू की: गीथब जिस्ट

#!/bin/sh
# script to create timer in terminal
# Jason Atwood
# 2013/6/22

# start up
echo "starting timer script ..."
sleep 1 # seconds

# get input from user
read -p "Timer for how many minutes?" -e DURATION
DURATION=$(( $DURATION*60 )) # convert minutes to seconds

# get start time
START=$(date +%s)

# infinite loop
while [ -1 ]; do
clear # clear window

# do math
NOW=$(date +%s) # get time now in seconds
DIF=$(( $NOW-$START ))  # compute diff in seconds
ELAPSE=$(( $DURATION-$DIF ))    # compute elapsed time in seconds
MINS=$(( $ELAPSE/60 ))  # convert to minutes... (dumps remainder from division)
SECS=$(( $ELAPSE - ($MINS*60) )) # ... and seconds

# conditional
if [ $MINS == 0 ] && [ $SECS == 0 ] # if mins = 0 and secs = 0 (i.e. if time expired)
then # blink screen
for i in `seq 1 180`; # for i = 1:180 (i.e. 180 seconds)
do
clear # flash on
setterm -term linux -back red -fore white # use setterm to change background color
echo "00:00 " # extra tabs for visibiltiy

sleep 0.5

clear # flash off
setterm -term linux -default # clear setterm changes from above
echo "00:00" # (i.e. go back to white text on black background)
sleep 0.5
done # end for loop
break   # end script

else # else, time is not expired
echo "$MINS:$SECS"  # display time
sleep 1 # sleep 1 second
fi  # end if
done    # end while loop 

1
अच्छी स्क्रिप्ट, +1। बस आप जानते हैं, कि एक उलटी गिनती घड़ी है, स्टॉपवॉच नहीं।
टेराडॉन

हा तुम सही हो, मैं वास्तव में क्या चाहता था। मैं अपना नामकरण अपडेट करूंगा।
tir38

3

मुझे आश्चर्य है कि किसी ने sleepenhअपनी स्क्रिप्ट में टूल का इस्तेमाल नहीं किया । इसके बजाय, प्रस्तावित समाधान या तो sleep 1बाद के टाइमर आउटपुट या एक व्यस्त लूप के बीच का उपयोग करते हैं जो जितनी जल्दी हो सके उतना तेज़ आउटपुट देता है। पूर्व अपर्याप्त है क्योंकि मुद्रण करने में बहुत कम समय व्यतीत होने के कारण, उत्पादन वास्तव में प्रति सेकंड एक बार नहीं होगा, बल्कि उससे थोड़ा सा कम होगा जो कि उप-रूपी है। पर्याप्त समय बीतने के बाद, काउंटर एक सेकंड को छोड़ देगा। उत्तरार्द्ध अपर्याप्त है क्योंकि यह सीपीयू को बिना किसी अच्छे कारण के व्यस्त रखता है।

मेरे पास जो उपकरण है वह $PATHइस तरह दिखता है:

#!/bin/sh
if [ $# -eq 0 ]; then
    TIMESTAMP=$(sleepenh 0)
    before=$(date +%s)
    while true; do
        diff=$(($(date +%s) - before))
        printf "%02d:%02d:%02d\r" $((diff/3600)) $(((diff%3600)/60)) $((diff%60))
        TIMESTAMP=$(sleepenh $TIMESTAMP 1.0);
    done
    exit 1 # this should never be reached
fi
echo "counting up to $@"
"$0" &
counterpid=$!
trap "exit" INT TERM
trap "kill 0" EXIT
sleep "$@"
kill $counterpid

स्क्रिप्ट या तो स्टॉप वॉच (बाधित होने तक की गिनती) या एक टाइमर के रूप में इस्तेमाल की जा सकती है जो निर्दिष्ट समय के लिए चलती है। चूंकि sleepकमांड का उपयोग किया जाता है, यह स्क्रिप्ट उस अवधि को निर्दिष्ट करने की अनुमति देती है जिसके लिए आपकी sleepअनुमति के समान सटीकता में गणना की जाती है । डेबियन और डेरिवेटिव पर, इसमें उप-सेकंड की नींद और समय को निर्दिष्ट करने के लिए एक अच्छा मानव-पठनीय तरीका शामिल है। तो उदाहरण के लिए आप कह सकते हैं:

$ time countdown 2m 4.6s
countdown 2m 4.6s  0.00s user 0.00s system 0% cpu 2:04.60 total

और जैसा कि आप देख सकते हैं, कमांड केवल स्क्रिप्ट में बहुत जादू के बिना 2 मिनट और 4.6 सेकंड के लिए ठीक से चला।

संपादित करें :

स्लीपेन टूल डेबियन में एक ही नाम के पैकेज से आता है और उबंटू जैसे इसके डेरिवेटिव। वितरण के लिए जो इसके पास नहीं है, यह https://github.com/nsc-deb/sleepenh से आता है

स्लीपेन का लाभ यह है कि यह एक छोटी सी देरी को ध्यान में रखने में सक्षम है जो लूप के दौरान नींद के अलावा अन्य चीजों के प्रसंस्करण से समय के साथ जमा होता है। यहां तक ​​कि अगर कोई सिर्फ sleep 110 बार लूप में होता है , तो ओवरहॉलिंग निष्पादन छोटे sleepलूप के कारण 10 सेकंड से कुछ अधिक समय लेगा, जो कि लूप को निष्पादित और पुनरावृत्त करने से आता है । यह त्रुटि धीरे-धीरे जमा होती है और समय के साथ हमारे स्टॉपवॉच टाइमर को अधिक से अधिक गति प्रदान करेगी। इस समस्या को ठीक करने के लिए, प्रत्येक लूप पुनरावृत्ति को सोने के लिए सटीक समय की गणना करनी चाहिए जो आमतौर पर एक सेकंड (एक सेकंड के अंतराल के लिए) से थोड़ा कम है। स्लीपेन टूल आपके लिए ऐसा करता है।


मुझे समझ में नहीं आता कि इससे मेरे उत्तर पर क्या लाभ होता है जो भी उपयोग करता है sleep 0.1। क्या है sleepnh(मैं आर्क रिपोस में इसे नहीं खोज सकता) और यह कैसे अलग है sleep? जहाँ तक मैं बता सकता हूँ, आप मूल रूप से ऊपर मेरे जवाब के रूप में एक ही बात कर रहे हैं। मैं क्या खो रहा हूँ?
टेरण्ड

@terdon Sleepenh यहाँ से आता है github.com/nsc-deb/sleepenh सिर्फ कहने के साथ समस्या sleep 5यह है कि आप वास्तव में 5 सेकंड के लिए नहीं सोती हैं। उदाहरण के लिए प्रयास करें time sleep 5और आप देखते हैं कि कमांड को चलाने में 5 सेकंड से थोड़ा अधिक समय लगता है। समय के साथ त्रुटियां जमा होती जाती हैं। नींद की उपयोगिता त्रुटि के इस संचय से आसानी से बचने की अनुमति देती है।
जॉस

ठीक। मेरे सिस्टम पर मुझे 0.002 सेकंड की एक त्रुटि दिखाई देती है। मुझे वास्तव में संदेह है कि कोई भी इस प्रकार के उपकरण का उपयोग करेगा और मिलीसेकंड सटीकता की तुलना में बेहतर होने की उम्मीद करेगा, लेकिन बेहतर होगा कि आप कम से कम अपने उत्तर को संपादित करें और मैं) समझाता हूं कि क्यों sleepnhबेहतर है sleep(आप केवल अन्य उत्तर का उपयोग करते हैं- sleep 1जो वे नहीं कहते हैं , केवल ओपी उस का उपयोग करता है) और ii) जहां इसे प्राप्त करना है और इसे कैसे स्थापित करना है क्योंकि यह एक मानक उपकरण नहीं है।
टेराडॉन

1
@terdon मैं के बीच का अंतर समझाया sleepऔर sleepenhपहले अनुच्छेद में। वैसे भी, मैं शायद उस पर पर्याप्त स्पष्ट नहीं था इसलिए मैंने उस पर अधिक विस्तार किया। मिलीसेकंड सटीकता समस्याएं sleepएक बार कॉल करने पर आपको मिलती हैं । वे समय के साथ जमा होते हैं और कुछ बिंदु पर यह ध्यान देने योग्य है। मैंने यह नहीं कहा कि दूसरे केवल उपयोग करते हैं sleep 1। मैंने कहा कि वे उपयोग करते हैं sleep 1या एक व्यस्त। जो वे अब भी करते हैं। मुझे एक काउंटर उदाहरण दिखाएं। उत्तर जो करते sleep 0.1हैं वही करते हैं sleep 1सिवाय इसके कि वे त्रुटियों को और भी तेजी से जमा करते हैं।
जॉस

मैं आपके द्वारा हल की गई समस्या के अस्तित्व को कम से कम स्वीकार करते हुए किसी के उत्तर की तलाश में आया था।
मारीतोमो

2

संक्षिप्त जवाब:

for i in `seq 60 -1 1` ; do echo -ne "\r$i " ; sleep 1 ; done

स्पष्टीकरण:

मुझे पता है कि बहुत सारे उत्तर हैं, लेकिन मैं सिर्फ ओपी के प्रश्न के बहुत करीब से कुछ पोस्ट करना चाहता हूं, जिसे मैं व्यक्तिगत रूप से " टर्मिनल में ऑनलाइनर काउंटडाउन " के रूप में स्वीकार करूंगा । मेरे लक्ष्य थे:

  1. एक लाइन।
  2. उलटी गिनती।
  3. याद रखना आसान है और कंसोल में टाइप करें (कोई फ़ंक्शन और भारी तर्क नहीं, केवल बैश करें)।
  4. स्थापित करने के लिए अतिरिक्त सॉफ़्टवेयर की आवश्यकता नहीं है (किसी भी सर्वर पर उपयोग किया जा सकता है जो मैं ssh से गुजरता हूं, भले ही मेरे पास वहां रूट न हो)।

यह काम किस प्रकार करता है:

  1. seq 60 से 1 तक की संख्या।
  2. echo -ne "\r$i "रिटर्न स्ट्रिंग की शुरुआत के लिए ध्यान रखता है और वर्तमान $iमूल्य को प्रिंट करता है । अंतरिक्ष के बाद यह पिछले मूल्य को अधिलेखित करने के लिए आवश्यक है, अगर यह वर्तमान $i(10 -> 9) के वर्णों से अधिक लंबा था ।

1
यह मैक ओएस पर मेरे उपयोग के मामले के लिए सबसे अच्छा काम किया जो एक बैश स्क्रिप्ट में उपयोग के लिए है। यह कैसे काम करता है इसका स्पष्टीकरण अतिरिक्त सहायक है।
जेम्स कैंपबेल

1

भविष्य के संदर्भ के लिए, काउंटडाउन / काउंट-अप टाइमर के लिए कमांड लाइन टूल है जिसे बहुत सीधा कमांड लाइन विकल्पों के साथ with टीमर कहा जाता है ।


1

आप एक कमांड लाइन स्टॉपवॉच की तलाश में OSX पर एक व्यक्ति हैं। बहाना करें कि आप ग्नू उपकरण स्थापित नहीं करना चाहते हैं और सिर्फ यूनिक्स के साथ चलना चाहते हैंdate

उस मामले में जैसा @terdon कहते हैं, लेकिन इस संशोधन के साथ:

function stopwatch(){
    date1=`date +%s`; 
    while true; do 
        echo -ne "$(date -jf "%s" $((`date +%s` - $date1)) +%H:%M:%S)\r"; 
        sleep 0.1
    done
}

1
मैंने इसे OS X El Capitan पर आज़माया, किसी कारण से यह 16:00:00 से शुरू हो रहा है
nopole

1

बस यूटीसी समय में घड़ी + तारीख का उपयोग करें। तुम भी बड़े प्रदर्शन के लिए कुछ पैकेज स्थापित कर सकते हैं ...

export now="`date +%s -u`";
watch -n 0,1 'date +%T -u -d @$((`date +%s` - $now ))'

#Big plain characters
watch -n 0,1 'date +%T -u -d @$((`date +%s` - $now )) | toilet -f mono12'

#Big empty charaters
watch -n 0,1 'date +%T -u -d @$((`date +%s` - $now )) | figlet -c -f big'

कोशिश करो!

Http://www.cyberciti.biz/faq/create-large-colorful-text-banner-on-screen/ देखें


1

sw एक साधारण स्टॉपवॉच है जो हमेशा के लिए चलेगी।

sw

इंस्टॉल करें I

wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw

प्रयोग

sw
 - start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
 - start a stopwatch from the last saved start time (or current time if no last saved start time exists)
 - "-r" stands for --resume

1

एक अजगर उदाहरण:

#!/usr/bin/python

def stopwatch ( atom = .01 ):
    import time, sys, math

    start = time.time()
    last = start
    sleep = atom/2
    fmt = "\r%%.%sfs" % (int(abs(round(math.log(atom,10))))  if atom<1 else "")
    while True:
        curr = time.time()
        subatom = (curr-last)
        if subatom>atom:
            # sys.stdout.write( "\r%.2fs" % (curr-start))
            sys.stdout.write( fmt % (curr-start))
            sys.stdout.flush()
            last = curr
        else:
            time.sleep(atom-subatom)

stopwatch()

डेमो



0

यह स्वीकृत उत्तर के समान है, लेकिन टेर्डन countdown()ने मुझे सिंटैक्स त्रुटियां दी हैं। हालांकि यह मेरे लिए बहुत अच्छा काम करता है:

function timer() { case "$1" in -s) shift;; *) set $(($1 * 60));; esac; local S=" "; for i in $(seq "$1" -1 1); do echo -ne "$S\r $i\r"; sleep 1; done; echo -e "$S\rTime's up!"; }

आप इसे अंदर डाल सकते हैं .bashrcऔर फिर इसके साथ निष्पादित कर सकते हैं: timer t(जहां t मिनट में समय है)।


0

एक कार्यशाला के लिए एक बड़े उलटी गिनती घड़ी प्रदर्शित करने के लिए एक शब्द आवेदन की तलाश में, आज पहले यह सवाल मिला। सुझावों में से कोई भी वैसा नहीं था जिसकी मुझे आवश्यकता थी, इसलिए मैंने जल्दी से एक और गो में एक साथ रखा: https://github.com/bnaucler/cdown

जैसा कि प्रश्न पहले से ही पर्याप्त रूप से उत्तर दिया गया है, इस बात को मरणोपरांत मानें।


0

$ नींद 1500 && xterm -fg पीले -g 240x80 और

जब पीले पाठ के साथ वह बड़ा टर्मिनल ऊपर उठता है, तो उठने और खिंचाव का समय!

नोट्स: - १५०० सेकंड = २५ मिनट पोमोडोरो - २४०x80 = टर्मिनल आकार २४० वर्ण पंक्ति, और rows० पंक्तियों के साथ। मेरे लिए एक स्क्रीन भर देता है।

श्रेय: http://www.linuxquestions.org/questions/linux-newbie-8/countdown-timer-for-linux-949463/


0

स्टॉपवॉच का एक जीयूआई संस्करण

date1=`date +%s`
date1_f=`date +%H:%M:%S____%d/%m`
(
  while true; do 
    date2=$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)
    echo "# started at $date1_f \n$date2"
  done
) |
zenity --progress \
  --title="Stop Watch" \
  --text="Stop Watch..." \
  --percentage=0

-2

यदि आप जो भी कारण के लिए एक संकलन-सक्षम कार्यक्रम चाहते हैं, वह निम्नलिखित कार्य करेगा:

#include <iostream>
#include <string>
#include <chrono>

int timer(seconds count) {
  auto t1 = high_resolution_clock::now();
  auto t2 = t1+count;
  while ( t2 > high_resolution_clock::now()) {
    std::cout << "Seconds Left:" <<
    std::endl <<
      duration_cast<duration<double>>(count-(high_resolution_clock::now()-t1)).count() << 
    std::endl << "\033[2A\033[K";
    std::this_thread::sleep_for(milliseconds(100));
  }
  std::cout << "Finished" << std::endl;
  return 0;
}

इसका उपयोग अन्य कार्यक्रमों में भी किया जा सकता है और आसानी से पोर्ट किया जा सकता है, यदि कोई बैश वातावरण उपलब्ध नहीं है या आप एक संकलित प्रोग्राम का उपयोग करना पसंद करते हैं

GitHub

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.