LoginSignup
13
12

More than 5 years have passed since last update.

シェルスクリプトで進捗とか

Posted at

シェルスクリプトの\nとか\tとか使いたい場合

echo -e "a \t b"

というような感じで -e オプションを付けることでタブや改行を表現することができます

そのほか、改行などを制御するエスケープシーケンスが存在していて色々できそうなのでやってみました

行末までクリア

\e[K

改行しない

通常echoなどで出力すると改行も自動で入ってしまうのですが改行をさせないということもできます

\c

座標へカーソルを移動

  • 描画している座標を0,0へカーソルを移動
  • 数値を変えれば任意の座標に移動できる

\e[0;0H

サンプル

改行しなかったり、座標を自由にセットできたりすれば色々自由にできそうです

試しに時刻を表示するスクリプトを書いてみました

#/bin/sh

echo_bar(){
  length="$1"
  i=0
  while [ $i -lt $length ]
  do
    echo -e "*\c"
    i=`expr $i + 1`
  done
}

clear
echo -e "\e[0;0H"
while true
do
  hour=`date +%H`
  min=`date +%M`
  sec=`date +%S`

  echo -e "\e[K\c"
  echo -e "h: $hour: \c"
  echo_bar $hour
  echo ""

  echo -e "\e[K\c"
  echo -e "m: $min: \c"
  echo_bar $min
  echo ""

  echo -e "\e[K\c"
  echo -e "s: $sec: \c"
  echo_bar $sec
  echo ""

  sleep 1
  echo -e "\e[0;0H"
done

text

簡単な監視スクリプトなど図にして見やすくしたい場合とかに使えそうです

13
12
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12