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 ?

3voto

tir38 Points 2391

J'ai fini par écrire mon propre script shell : GitHub gist

#!/bin/sh
# script pour créer un minuteur dans le terminal
# Jason Atwood
# 2013/6/22

# Début
echo "démarrage du script minuteur ..."
sleep 1 # secondes

# Obtenir l'entrée de l'utilisateur
read -p "Minuteur pour combien de minutes ?" -e DURATION
DURATION=$(( $DURATION*60 )) # convertir les minutes en secondes

# Obtenir l'heure de début
START=$(date +%s)

# Boucle infinie
while [ -1 ]; do
clear # Effacer la fenêtre

# Faire des mathématiques
NOW=$(date +%s)    # Obtenir l'heure actuelle en secondes
DIF=$(( $NOW-$START ))    # Calculer la différence en secondes
ELAPSE=$(( $DURATION-$DIF ))    # Calculer le temps écoulé en secondes
MINS=$(( $ELAPSE/60 ))    # Convertir en minutes... (supprime le reste de la division)
SECS=$(( $ELAPSE - ($MINS*60) )) # ... et secondes

# Condition
if [ $MINS == 0 ] && [ $SECS == 0 ]    # si mins = 0 et secs = 0 (c'est-à-dire si le temps est écoulé)
then # Faire clignoter l'écran
for i in `seq 1 180`; # pour i = 1:180 (c'est-à-dire 180 secondes)
do
clear # Flash activé
setterm -term linux -back red -fore white # utilisé setterm pour changer la couleur de fond
echo "00:00 " # des onglets supplémentaires pour la visibilité

sleep 0.5

clear # Flash désactivé
setterm -term linux -default # Effacer les modifications de setterm ci-dessus
echo "00:00" # (c'est-à-dire revenir à du texte blanc sur fond noir)
sleep 0.5
done # Fin de la boucle for
break    # Fin du script

else # Sinon, le temps n'est pas écoulé
echo "$MINS:$SECS"    # Afficher le temps
sleep 1 # Attendre 1 seconde
fi    # Fin de si
done    # Fin de la boucle while

1 votes

Beau script, +1. Juste pour que vous le sachiez, il s'agit d'un compte à rebours, pas d'un chronomètre.

0 votes

Ha tu as raison, c'est ce que je voulais vraiment. Je vais mettre à jour mes noms.

3voto

Cory Klein Points 1392

sw est un simple chronomètre qui fonctionnera indéfiniment.

sw

Installer

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

Utilisation

sw
 - démarrer un chronomètre à partir de 0, enregistrer l'heure de démarrage dans ~/.sw
sw [-r|--resume]
 - démarrer un chronomètre à partir de la dernière heure de démarrage enregistrée (ou l'heure actuelle s'il n'y a pas d'heure de démarrage enregistrée précédemment)
 - "-r" signifie --resume

0 votes

Erreur sur arch: Essayez 'date --help' pour plus d'informations. ate: option invalide -- 'v'

0 votes

Pourquoi installer quelque chose dont l'URL contient "sinister"? - "2. Mauvais ou apparemment mauvais; indiquant un danger ou un préjudice latent."

0 votes

Je suis d'accord, "sinistre" était un choix de nom horrible pour un programme d'installation de logiciels.

3voto

SystematicFrank Points 141

Jetez un œil à TermTime. C'est une belle horloge basée sur le terminal et un chronomètre :

pip install termtime

2voto

Tom Points 343

Pour référence future, il existe un outil en ligne de commande appelé µTimer avec des options de ligne de commande très simples pour un minuteur de compte à rebours/compte à rebours.

1voto

Paul Warwicker Points 36

Un exemple Python :

#!/usr/bin/python

def chronomètre ( atome = .01 ):
    import time, sys, math

    début = time.time()
    dernier = début
    sommeil = atome/2
    fmt = "\r%%.%sfs" % (int(abs(round(math.log(atome,10))))  if atome<1 else "")
    while True:
        courant = time.time()
        sous-atome = (courant-dernier)
        if sous-atome>atome:
            # sys.stdout.write( "\r%.2fs" % (courant-début))
            sys.stdout.write( fmt % (courant-début))
            sys.stdout.flush()
            dernier = courant
        else:
            time.sleep(atome-sous-atome)

chronomètre()

demo

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