Je ne sais pas pourquoi vous avez besoin de beep
. Si tout ce que vous voulez est un chronomètre, vous pouvez faire ceci :
while true; do echo -ne "`date`\r"; done
Cela vous montrera les secondes qui passent en temps réel et vous pourrez 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 un "format chronomètre", où tout commence à 0 et commence à croître, 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 (ce qui n'est pas ce que votre question initiale demandait), vous pouvez faire ceci (modifier 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
(le sleep 0.1
fera attendre le système pendant 1/10ème de seconde entre chaque exécution afin de 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 compter deux heures avec :
countdown $((2*60*60))
ou une journée entière en utilisant :
countdown $((24*60*60))
Et lancez le chronomètre en exécutant :
stopwatch
Si vous devez pouvoir 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 le stopwatch
la fonction n'a pas été testée depuis des jours car je ne voulais pas vraiment attendre 24 heures pour cela. Cela devrait fonctionner, mais faites-le moi savoir si ce n'est pas le cas.
Ma méthode préférée est :
Début :
time cat
Arrêt :
ctrl+c
Comme @wjandrea l'a commenté ci-dessous, une autre version est à exécuter :
time read
et appuyez sur Enter
arrêter
Je cherchais la même chose et j'ai fini par écrire quelque chose de plus élaboré en Python :
Cela vous donnera un simple compte à rebours de 10 secondes :
sudo pip install termdown
termdown 10
Source :https://github.com/trehn/termdown