GNU/Linux >> Tutoriels Linux >  >> Linux

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

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


Linux
  1. Existe-t-il un moyen de 'uniq' par colonne?

  2. Existe-t-il un moyen d'inspecter le rpath actuel sous Linux ?

  3. Existe-t-il un moyen de convertir UTF8 en ISO-8859-1 ?

  4. Existe-t-il un moyen de renommer un projet Cargo ?

  5. La commande 'ls -d' n'affiche pas les répertoires. Existe-t-il un moyen d'obtenir que 'ls' affiche uniquement les répertoires au lieu des fichiers et des répertoires?

Comment afficher les images miniatures dans le terminal

Afficher le résumé du référentiel Git dans le terminal à l'aide de Onefetch

Afficher les informations système Linux dans le terminal à l'aide de Macchina

Neofetch - Afficher les informations du système Linux dans le terminal

Afficher l'arbre de Noël animé dans le terminal

Existe-t-il un moyen d'obtenir des emoji colorés dans n'importe quel émulateur de terminal sous Linux ?