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