ターミナルにドットを描画
LinuxなどのコンソールはANSIが制定した画面制御機能を使用することで,カーソルの移動や文字色・背景色を設定できる.
例えば"\033[${y};${x}f"
をコンソールに出力することで(${x}
,${y}
)にカーソルを移動する.
また"\033[$attr;${bg};${fg}m"
を出力することで背景色,文字色をそれぞれ${bg}
,${fg}
に設定できる.
これらを組み合わせることで,ターミナルの任意の場所にドットを打つ関数を次のように実装できる.
## Put a pixel at (x,y). Position x and y are given by argument $1 ## and $2. The color of the pixel is given by $3, which runs 0 - 7 function putPixel { if [ $# -lt 3 ]; then echo too few arguments >&2 return 1 fi x=`echo "$1 * 2" | bc` y=$2 fg=3$3 bg=4$3 printf "\033[${y};${x}f" printf "\033[$attr;${bg};${fg}m \033[m" }
応用例
この関数を使って,ターミナルにサイン波を描くプログラムを作った.
A script which draws sin graph in terminal · GitHub
実行結果はこちら.