220 votes

Y a-t-il un moyen d'afficher un compte à rebours ou un minuteur de chronomètre dans un terminal?

Comment puis-je afficher un minuteur de compte à rebours en temps réel sur le terminal Linux ? Existe-t-il une application existante ou, encore mieux, une seule ligne de code pour le faire ?

1voto

ibrsbk Points 1

Faites semblant d'être une personne sur OS X à la recherche d'un chronomètre en ligne de commande. Faites semblant de ne pas vouloir installer les outils GNU et de simplement vouloir continuer avec le date Unix.

Dans ce cas, faites comme terdon dit, mais avec cette modification :

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

1 votes

J'ai essayé cela sur OS X El Capitan, pour une raison quelconque il commence à 16:00:00

0 votes

D'accord, j'ai trouvé la réponse. Il faut utiliser date -ujf au lieu de date -jf et cela commencera par 00:00:00

1voto

MUY Belgium Points 325

Il suffit d'utiliser watch + date en temps UTC. Vous pouvez également installer un package pour un grand affichage...

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

#Grands caractères simples
watch -n 0,1 'date +%T -u -d @$((`date +%s` - $now )) | toilet -f mono12'

#Grands caractères vides
watch -n 0,1 'date +%T -u -d @$((`date +%s` - $now )) | figlet -c -f big'

Essayez!

Voir aussi http://www.cyberciti.biz/faq/create-large-colorful-text-banner-on-screen/

1voto

Shakiba Moshiri Points 171

Juste une ligne

N=100; while [[ $((--N)) >  0 ]]; do  echo  $N |  figlet -c && sleep 1 ; done

capture d'écran

entrer la description de l'image ici

Nous pouvons également effacer l'écran (Terminal) en utilisant les séquences d'échappement ANSI au format 2J.

N=100; while [[ $((--N)) >  0 ]]; do  echo -e "\033[2J\033[0m"; echo "$N" |  figlet -c && sleep 1 ; done

REMARQUE

l'installation de la commande figlet est requise si vous avez besoin de gros caractères, sinon supprimez la partie figlet.

N=100; while [[ $((--N)) >  0 ]]; do  echo  $N  && sleep 1 ; done

et vous pouvez obtenir une superbe sortie en utilisant lolcat ...

N=100; while [[ $((--N)) >  0 ]]; do  echo "$N" |  figlet -c | lolcat &&  sleep 1 ; done

capture d'écran

entrer la description de l'image ici

1voto

nonopolarity Points 9110

Si votre système possède déjà Ruby, vous pouvez utiliser :

#!/usr/bin/env ruby

n = ARGV[0].to_f
go_beginning_of_line = "\033[G"
clear_till_end_of_line = "\033[K"

time_end = Time.now + n
while Time.now < time_end
    more = time_end - Time.now
    print "#{go_beginning_of_line}Compte à rebours #{more.round(1)} de #{n} secondes#{clear_till_end_of_line}"
    sleep [0.1, more].min
end
puts "#{go_beginning_of_line}Compte à rebours #{n} secondes. \a\aTerminé.#{clear_till_end_of_line}"

1voto

naa-7 Points 11

Ceci est un minuteur basé sur un terminal : https://github.com/naa-7/terminal_work_timer

compte à rebours du minuteur minuteur arrêté

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X