GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna forma de mostrar una cuenta regresiva o un cronómetro en una terminal?

No estoy seguro de por qué necesita beep . Si todo lo que quieres es un cronómetro, puedes hacer esto:

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

Eso le mostrará los segundos que pasan en tiempo real y puede detenerlo con Ctrl +C . Si necesita mayor precisión, puede usar esto para obtener nanosegundos:

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

Finalmente, si realmente desea un "formato de cronómetro", donde todo comienza en 0 y comienza a crecer, podría hacer algo como esto:

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

Para un temporizador de cuenta regresiva (que no es lo que solicitó su pregunta original), puede hacer esto (cambiar los segundos en consecuencia):

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

Puede combinarlos en comandos simples mediante el uso de funciones bash (o el shell que prefiera). En bash, agrega estas líneas a tu ~/.bashrc (el sleep 0.1 hará que el sistema espere 1/10 de segundo entre cada ejecución para que no envíe spam a su 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
}

A continuación, puede iniciar un temporizador de cuenta atrás de un minuto ejecutando:

countdown 60

Puedes hacer una cuenta regresiva de dos horas con:

countdown $((2*60*60))

o un día entero usando:

countdown $((24*60*60))

E inicia el cronómetro ejecutando:

stopwatch

Si necesita manejar días además de horas, minutos y segundos, puede hacer algo como esto:

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
}

Tenga en cuenta que el stopwatch La función no se ha probado durante días porque realmente no quería esperar 24 horas para ello. Debería funcionar, pero avíseme si no funciona.


Mi forma favorita es:

Inicio:

time cat

Detener:

ctrl+c

Como @wjandrea comentó a continuación, se ejecutará otra versión:

time read

y presiona Enter detener


Estaba buscando lo mismo y terminé escribiendo algo más elaborado en Python:

Esto le dará una cuenta regresiva simple de 10 segundos:

sudo pip install termdown
termdown 10

Fuente:https://github.com/trehn/termdown


Linux
  1. ¿Hay alguna forma de cambiar el nombre de un proyecto Cargo?

  2. El comando 'ls -d' no muestra directorios. ¿Hay alguna manera de hacer que 'ls' solo muestre directorios en lugar de archivos y directorios?

  3. ¿Hay alguna manera de iniciar vim en modo de solo lectura?

  4. ¿Hay alguna manera de copiar texto en htop?

  5. ¿Hay alguna forma de seleccionar por varias condiciones en `ps`?

Cómo mostrar imágenes en miniatura en la terminal

Mostrar el resumen del repositorio de Git en la terminal usando Onefetch

Mostrar información del sistema Linux en la terminal usando Macchina

Neofetch:muestra información del sistema Linux en la terminal

Mostrar árbol de Navidad animado en la terminal

¿Hay alguna manera de obtener emoji de colores en cualquier emulador de terminal en Linux?