ターミナル上で一定時間ごとになんらかのメッセージを表示するための方法


ローカルのターミナル上で作業をしていると、たまにぼーっとなってしまうことがあります。そういうときに、時間毎に、定期的にターミナル上にメッセージを表示させて注意を促したいのですが、そういう場合に、最も安全な方法はあるのでしょうか。

例えば、単純にメッセージを定期的に表示させたい、とするならば、下のような無限ループのシェルスクリプトを書き、それをバックグラウンド(`Ctrl+z
bg`)で実行すれば、とりあえずはメッセージが出ます:

[code]

     while true
     do
         echo "\n"
         echo `date`
         sleep 10s
     done
    
[/code]

しかし、この問題は、例えば入力最中のコマンドがあった場合、メッセージが割り込んで表示されてしまい、作業の邪魔になり、またこれを終了させるためには`kill`コマンドを利用しなければならず、どう考えても良い方法だとは思えません。もし、いい方法があれば教えてください。

なお、`notify-send`でバルーン表示ができることはわかっているのですが、そのような方法は期待していません(あくまでターミナル上が望ましいです)。

利用しているシェルは`bash`、利用しているOSは`Ubuntu 14.04`になります。




そのまま表示してしまうと、場所がおかしくなるのが問題であれば、エスケープシーケンスで場所の切り替えをしてあげると良いかもしれません。

具体的には

[code]

    echo -n -e "\033[s\033[1;40H\033[07;37m---ALERT---\033[m\033[u"
    
[/code]

となります。

  * -n : 改行を付加しません
  * -e : エスケープ文字を使用します
  * \033[s : 現在のカーソル位置を保存します
  * \033[ **Y** ; **X** H : カーソルの位置を変更します
  * \033[07;37m : 文字を白の反転にします
  * \033[m : 文字の色を戻します。
  * \033[u : 保存していた位置にカーソルを戻します。

