GNU/Linux >> Linux の 問題 >  >> Linux

端末にカウントダウンまたはストップウォッチ タイマーを表示する方法はありますか?

beep が必要な理由がわかりません .ストップウォッチだけが必要な場合は、これを行うことができます:

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

これにより、秒の経過がリアルタイムで表示され、Ctrl で停止できます。 +C .より高い精度が必要な場合は、これを使用してナノ秒を取得できます:

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

最後に、すべてが 0 から始まり成長し始める「ストップウォッチ形式」が本当に必要な場合は、次のようにすることができます。

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

カウントダウン タイマー (元の質問で求められたものではありません) の場合、次のようにできます (それに応じて秒数を変更します):

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

bash (またはお好みのシェル) 関数を使用して、これらを単純なコマンドに組み合わせることができます。 bash で、これらの行を ~/.bashrc に追加します (sleep 0.1 CPU をスパムに使用しないように、各実行の間にシステムを 1/10 秒待機させます):

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
}

次のコマンドを実行して、1 分間のカウントダウン タイマーを開始できます。

countdown 60

次の方法で 2 時間カウントダウンできます:

countdown $((2*60*60))

または以下を使用して丸一日:

countdown $((24*60*60))

次を実行してストップウォッチを開始します。

stopwatch

時間、分、秒だけでなく、日も処理できるようにする必要がある場合は、次のようにすることができます。

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
}

stopwatch 24時間待ちたくなかったので、機能は何日もテストされていません。動作するはずですが、動作しない場合はお知らせください。


私のお気に入りの方法は:

開始:

time cat

停止:

ctrl+c

@wjandrea が以下にコメントしたように、別のバージョンが実行されます:

time read

Enterを押します やめる


私は同じものを探していましたが、Python でより精巧なものを書くことになりました:

これにより、単純な 10 秒間のカウントダウンが表示されます:

sudo pip install termdown
termdown 10

ソース:https://github.com/trehn/termdown


Linux
  1. NETCDF ファイルをトリミングする方法はありますか?

  2. 不良ブロックを再起動する方法はありますか?

  3. htopでテキストをコピーする方法はありますか?

  1. 列ごとに「ユニーク」にする方法はありますか?

  2. Linux で現在の rpath を検査する方法はありますか?

  3. UTF8 から ISO-8859-1 に変換する方法はありますか?

  1. Cargo プロジェクトの名前を変更する方法はありますか?

  2. コマンド「ls -d」でディレクトリが表示されません。ファイルとディレクトリの代わりにディレクトリのみを表示するように「ls」を取得する方法はありますか?

  3. 読み取り専用モードでvimを起動する方法はありますか