Saya tidak yakin mengapa Anda membutuhkan beep
. Jika yang Anda inginkan hanyalah stopwatch, Anda dapat melakukan ini:
while true; do echo -ne "`date`\r"; done
Itu akan menunjukkan kepada Anda detik-detik yang berlalu secara waktu nyata dan Anda dapat menghentikannya dengan Ctrl +C . Jika Anda membutuhkan presisi yang lebih tinggi, Anda dapat menggunakan ini untuk memberi Anda nanodetik:
while true; do echo -ne "`date +%H:%M:%S:%N`\r"; done
Terakhir, jika Anda benar-benar menginginkan "format stopwatch", di mana semuanya dimulai dari 0 dan mulai berkembang, Anda dapat melakukan sesuatu seperti ini:
date1=`date +%s`; while true; do
echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
Untuk penghitung waktu mundur (bukan yang diminta oleh pertanyaan awal Anda), Anda dapat melakukan ini (sesuaikan detik):
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
Anda dapat menggabungkan ini menjadi perintah sederhana dengan menggunakan fungsi bash (atau shell mana pun yang Anda suka). Di bash, tambahkan baris ini ke ~/.bashrc
Anda (sleep 0.1
akan membuat sistem menunggu 1/10 detik di antara setiap proses sehingga Anda tidak mengirim spam ke CPU Anda):
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
}
Anda kemudian dapat memulai penghitung waktu mundur satu menit dengan menjalankan:
countdown 60
Anda dapat menghitung mundur dua jam dengan:
countdown $((2*60*60))
atau sepanjang hari menggunakan:
countdown $((24*60*60))
Dan mulai stopwatch dengan menjalankan:
stopwatch
Jika Anda harus dapat menangani hari serta jam, menit, dan detik, Anda dapat melakukan sesuatu seperti ini:
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
}
Perhatikan bahwa stopwatch
fungsi belum diuji selama berhari-hari karena saya tidak benar-benar ingin menunggu 24 jam untuk itu. Seharusnya berhasil, tetapi beri tahu saya jika tidak.
Cara favorit saya adalah:
Mulai:
time cat
Berhenti:
ctrl+c
Seperti yang dikomentari @wjandrea di bawah, versi lain akan dijalankan:
time read
dan tekan Enter
untuk berhenti
Saya mencari hal yang sama dan akhirnya menulis sesuatu yang lebih rumit dengan Python:
Ini akan memberi Anda hitungan mundur 10 detik sederhana:
sudo pip install termdown
termdown 10
Sumber:https://github.com/trehn/termdown