シェルスクリプトの\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
簡単な監視スクリプトなど図にして見やすくしたい場合とかに使えそうです