GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada cara untuk menampilkan penghitung waktu mundur atau penghitung waktu stopwatch di terminal?

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


Linux
  1. Apakah ada cara untuk 'uniq' dengan kolom?

  2. Apakah ada cara untuk mengganti nama proyek Cargo?

  3. Apakah ada cara untuk me-restart badblock?

  1. Apakah ada cara untuk memeriksa rpath saat ini di Linux?

  2. Apakah ada cara untuk mengonversi dari UTF8 ke ISO-8859-1?

  3. Apakah ada cara untuk memotong file NETCDF?

  1. Perintah 'ls -d' tidak menampilkan direktori. Apakah ada cara untuk mendapatkan 'ls' untuk hanya menampilkan direktori, bukan file dan direktori?

  2. Apakah ada cara untuk memulai vim dalam mode hanya baca

  3. Apakah ada cara untuk menyalin teks di htop?