Catégorie > High Tech

Existe-t-il un moyen d'afficher un compte à rebours ou un chronomètre dans un terminal?

Posté par Elliott, mise à jour le 12/07/2020 à 12:01:49

Comment afficher un compte à rebours en temps réel sur le terminal Linux? Existe-t-il une application existante ou, mieux encore, une doublure pour ce faire?


Posté par Mado

Je ne sais pas pourquoi vous en avez besoin beep. Si tout ce que vous voulez, c'est un chronomètre, vous pouvez le faire:

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


Cela vous montrera les secondes qui passent en temps réel et vous pouvez l'arrêter avec Ctrl+ C. Si vous avez besoin d'une plus grande précision, vous pouvez l'utiliser pour vous donner des nanosecondes:

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


Enfin, si vous voulez vraiment, vraiment "le format chronomètre", où tout commence à 0 et commence à grandir, vous pouvez faire quelque chose comme ceci:

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

Pour un compte à rebours (qui n'est pas ce que votre question initiale demandait), vous pouvez le faire (changer les secondes en conséquence):

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


Vous pouvez les combiner en commandes simples en utilisant les fonctions bash (ou le shell que vous préférez). En bash, ajoutez ces lignes à votre ~/.bashrc( sleep 0.1cela fera attendre le système 1 / 10ème de seconde entre chaque exécution pour ne pas spammer votre CPU):

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
}


Vous pouvez ensuite démarrer un compte à rebours d'une minute en exécutant:

countdown 60


Vous pouvez décompter deux heures avec:

countdown $((2*60*60))

ou une journée entière avec:

countdown $((24*60*60))


Et démarrez le chronomètre en exécutant:

stopwatch


Si vous devez être capable de gérer les jours ainsi que les heures, les minutes et les secondes, vous pouvez faire quelque chose comme ceci:

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
}


Notez que la stopwatchfonction n'a pas été testée depuis des jours car je ne voulais pas vraiment l'attendre 24 heures. Cela devrait fonctionner mais faites-le moi savoir si ce n'est pas le cas.

Posté par Antoine

Ma façon préférée est:

Début:
time cat

Arrêtez:
ctrl+c

Une autre version est à exécuter:
time read

et appuyez Enter pour arrêter

Posté par Helper

Je cherchais la même chose et j'ai fini par écrire quelque chose de plus élaboré en Python:

Cela vous donnera un compte à rebours simple de 10 secondes:

sudo pip install termdown
termdown 10s
s

Posté par mhule

J'ai utilisé celui-ci:

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
)

Exemple:

countdown "00:07:55"



Ajouter une réponse

Votre message :

:

Votre prénom:

Votre email:

:



A voir aussi :

Les dernières discussions:



Qui est Réponse Rapide?

Réponse rapide est un site internet communautaire. Son objectif premier est de permettre à ses membres et visiteurs de poser leurs questions et d’avoir des réponses en si peu de temps.

Quelques avantages de réponse rapide :

Vous n’avez pas besoins d’être inscrit pour poser ou répondre aux questions.
Les réponses et les questions des visiteurs sont vérifiées avant leurs publications.
Parmi nos membres, des experts sont là pour répondre à vos questions.
Vous posez vos questions et vous recevez des réponses en si peu de temps.

Note :

En poursuivant votre navigation, vous acceptez l'utilisation de cookies. En savoir plus