Nejsem si jistý, proč potřebujete beep
. Pokud chcete jen stopky, můžete to udělat takto:
while true; do echo -ne "`date`\r"; done
To vám ukáže ubíhající sekundy v reálném čase a můžete to zastavit pomocí Ctrl +C . Pokud potřebujete větší přesnost, můžete to použít k získání nanosekund:
while true; do echo -ne "`date +%H:%M:%S:%N`\r"; done
A konečně, pokud opravdu, ale opravdu chcete „formát stopek“, kde vše začíná na 0 a začíná růst, můžete udělat něco takového:
date1=`date +%s`; while true; do
echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
Pro odpočítávací časovač (což není to, co vaše původní otázka požadovala) můžete udělat toto (podle toho změnit sekundy):
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
Můžete je zkombinovat do jednoduchých příkazů pomocí funkcí bash (nebo jakéhokoli shellu, který preferujete). V bash přidejte tyto řádky do ~/.bashrc
(sleep 0.1
způsobí, že systém mezi každým spuštěním počká 1/10 sekundy, abyste si nezaspali 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
}
Poté můžete spustit odpočítávání jedné minuty spuštěním:
countdown 60
Dvě hodiny můžete odpočítávat pomocí:
countdown $((2*60*60))
nebo celý den pomocí:
countdown $((24*60*60))
A spusťte stopky spuštěním:
stopwatch
Pokud se potřebujete vypořádat se dny i hodinami, minutami a sekundami, můžete udělat něco takového:
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
}
Všimněte si, že stopwatch
funkce nebyla testována několik dní, protože jsem na ni nechtěl čekat 24 hodin. Mělo by to fungovat, ale pokud ne, dejte mi prosím vědět.
Můj oblíbený způsob je:
Start:
time cat
Stop:
ctrl+c
Jak níže poznamenal @wjandrea, má běžet další verze:
time read
a stiskněte Enter
zastavit
Hledal jsem to samé a nakonec jsem napsal něco propracovanějšího v Pythonu:
Tím získáte jednoduché 10sekundové odpočítávání:
sudo pip install termdown
termdown 10
Zdroj:https://github.com/trehn/termdown