GNU/Linux >> Linux Esercitazione >  >> Linux

C'è un modo per visualizzare un conto alla rovescia o un cronometro in un terminale?

Non sono sicuro del motivo per cui hai bisogno di beep . Se tutto quello che vuoi è un cronometro, puoi farlo:

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

Questo ti mostrerà i secondi che passano in tempo reale e puoi fermarlo con Ctrl +C . Se hai bisogno di maggiore precisione, puoi usarlo per darti nanosecondi:

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

Infine, se vuoi davvero un "formato cronometro", dove tutto inizia da 0 e inizia a crescere, potresti fare qualcosa del genere:

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

Per un timer per il conto alla rovescia (che non è quello richiesto dalla tua domanda originale) potresti fare questo (cambia i secondi di conseguenza):

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

Puoi combinarli in semplici comandi usando le funzioni bash (o qualsiasi altra shell tu preferisca). In bash, aggiungi queste righe al tuo ~/.bashrc (il sleep 0.1 farà attendere al sistema 1/10 di secondo tra ogni esecuzione in modo da non inviare spam alla 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
}

Puoi quindi avviare un conto alla rovescia di un minuto eseguendo:

countdown 60

Puoi fare il conto alla rovescia di due ore con:

countdown $((2*60*60))

o un'intera giornata utilizzando:

countdown $((24*60*60))

E avvia il cronometro eseguendo:

stopwatch

Se devi essere in grado di gestire giorni, ore, minuti e secondi, potresti fare qualcosa del genere:

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
}

Notare che stopwatch la funzione non è stata testata per giorni poiché non volevo davvero aspettare 24 ore per questo. Dovrebbe funzionare, ma in caso contrario fammi sapere.


Il mio modo preferito è:

Inizio:

time cat

Stop:

ctrl+c

Come @wjandrea ha commentato di seguito, deve essere eseguita un'altra versione:

time read

e premi Enter fermarsi


Stavo cercando la stessa cosa e ho finito per scrivere qualcosa di più elaborato in Python:

Questo ti darà un semplice conto alla rovescia di 10 secondi:

sudo pip install termdown
termdown 10

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


Linux
  1. C'è un modo per "uniq" per colonna?

  2. C'è un modo per ispezionare l'attuale rpath su Linux?

  3. C'è un modo per rinominare un progetto Cargo?

  4. Il comando 'ls -d' non visualizza le directory. C'è un modo per fare in modo che "ls" visualizzi solo le directory invece di file e directory?

  5. C'è un modo per avviare vim in modalità di sola lettura

Come visualizzare le immagini in miniatura nel terminale

Visualizza il riepilogo del repository Git nel terminale utilizzando Onefetch

Visualizza le informazioni sul sistema Linux nel terminale utilizzando Macchina

Neofetch:mostra le informazioni sul sistema Linux nel terminale

Mostra l'albero di Natale animato nel terminale

C'è un modo per ottenere emoji colorati in qualsiasi emulatore di terminale su Linux?