GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine Möglichkeit, einen Countdown- oder Stoppuhr-Timer in einem Terminal anzuzeigen?

Ich bin mir nicht sicher, warum Sie beep benötigen . Wenn Sie nur eine Stoppuhr wollen, können Sie Folgendes tun:

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

Das zeigt Ihnen die verstreichenden Sekunden in Echtzeit und Sie können es mit Strg stoppen +C . Wenn Sie eine höhere Genauigkeit benötigen, können Sie dies verwenden, um Ihnen Nanosekunden zu geben:

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

Schließlich, wenn Sie wirklich, wirklich ein "Stoppuhrformat" wollen, bei dem alles bei 0 beginnt und anfängt zu wachsen, könnten Sie so etwas tun:

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

Für einen Countdown-Timer (was nicht das ist, wonach Ihre ursprüngliche Frage gefragt hat) können Sie dies tun (Sekunden entsprechend ändern):

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

Sie können diese zu einfachen Befehlen kombinieren, indem Sie Bash-Funktionen (oder welche Shell Sie bevorzugen) verwenden. Fügen Sie in Bash diese Zeilen zu Ihrem ~/.bashrc hinzu (die sleep 0.1 lässt das System zwischen jedem Durchlauf 1/10 Sekunde warten, damit Sie Ihre CPU nicht mit Spam belasten):

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
}

Sie können dann einen Countdown-Timer von einer Minute starten, indem Sie Folgendes ausführen:

countdown 60

Sie können zwei Stunden herunterzählen mit:

countdown $((2*60*60))

oder einen ganzen Tag mit:

countdown $((24*60*60))

Und starten Sie die Stoppuhr, indem Sie Folgendes ausführen:

stopwatch

Wenn Sie in der Lage sein müssen, sowohl mit Tagen als auch mit Stunden, Minuten und Sekunden umzugehen, könnten Sie etwa so vorgehen:

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
}

Beachten Sie, dass stopwatch Funktion seit Tagen nicht mehr getestet, da ich nicht wirklich 24 Stunden darauf warten wollte. Es sollte funktionieren, aber bitte lassen Sie es mich wissen, wenn es nicht funktioniert.


Mein Lieblingsweg ist:

Anfang:

time cat

Stopp:

ctrl+c

Wie @wjandrea unten kommentierte, soll eine andere Version laufen:

time read

und drücken Sie Enter zu stoppen


Ich habe nach dem gleichen gesucht und am Ende etwas Ausgefeilteres in Python geschrieben:

Dadurch erhalten Sie einen einfachen 10-Sekunden-Countdown:

sudo pip install termdown
termdown 10

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


Linux
  1. Gibt es eine Möglichkeit, spaltenweise zu 'uniq'?

  2. Gibt es eine Möglichkeit, den aktuellen rpath unter Linux zu überprüfen?

  3. Gibt es eine Möglichkeit, von UTF8 nach ISO-8859-1 zu konvertieren?

  4. Gibt es eine Möglichkeit, Badblocks neu zu starten?

  5. Gibt es eine Möglichkeit, in `ps` nach mehreren Bedingungen auszuwählen?

So zeigen Sie Miniaturbilder im Terminal an

Zeigen Sie die Zusammenfassung des Git-Repositorys im Terminal mit Onefetch an

Zeigen Sie Linux-Systeminformationen im Terminal mit Macchina an

Neofetch – Zeigen Sie Linux-Systeminformationen im Terminal an

Zeigen Sie den animierten Weihnachtsbaum im Terminal an

Gibt es eine Möglichkeit, farbige Emojis in einem Terminalemulator unter Linux zu erhalten?