Bash

ANSIエスケープシーケンス チートシート

More than 1 year has passed since last update.

ANSIエスケープシーケンスを駆使すれば、
こんな感じでターミナルの出力に色を付けたり
2017-11-02_18h13_43.png

出力した内容を書き換えたりできる。
escape.gif

[PHP]ゲーム作成初心者がPHPでテト〇ス風ゲームを作ってみた
上記記事にて出力されるブロックの色を変更したり、出力内容を上書きしたりするのに使った。

記法

指定がない限り、太字の部分が可変となる箇所。

カーソル移動

記法 内容
\e[nA 上にn移動
\e[nB 下にn移動
\e[nC 右にn移動
\e[nD 左にn移動
\e[nE n行下の先頭に移動
\e[nF n行上の先頭に移動
\e[nG 現在位置と関係なく左からnの場所に移動
\e[n;mH
\e[n;mf
現在位置と関係なく上からn、左からmの場所に移動

コンソールスクロール

記法 内容
\e[nS n行分コンソールを次にスクロール
\e[nT n行分コンソールを前にスクロール

出力消去

記法 内容
\e[nJ 画面消去
0(or省略)・・・カーソルより後ろを消去
1・・・カーソルより前を消去
2・・・画面全体を消去
\e[nK 行消去
0(or省略)・・・カーソルより後ろを消去
1・・・カーソルより前を消去
2・・・行全体を消去

出力文字の変更

注:ターミナルによって対応してる/してないが分かれる

記法 内容
\e[0m 指定をリセットし未指定状態に戻す(0は省略可)
\e[1m 太字
\e[2m 薄く表示
\e[3m イタリック
\e[4m アンダーライン
\e[5m ブリンク
\e[6m 高速ブリンク
\e[7m 文字色と背景色の反転
\e[8m 表示を隠す(コピペ可能)
\e[9m 取り消し

出力色の変更

先述した \e[0m でリセット可能。

文字色 背景色
\e[30m \e[40m
\e[31m \e[41m
\e[32m \e[42m
\e[33m \e[43m 黄色
\e[34m \e[44m
\e[35m \e[45m マゼンダ
\e[36m \e[46m シアン
\e[37m \e[47m

出力色の変更(拡張)

注:ターミナルによって対応してる/してないが分かれる

文字色 背景色 内容
\e[38;5;nm \e[48;5;nm nを0~255のカラーコードを指定
\e[38;2;r;g;bm \e[48;2;r;g;bm RGBでのカラーコードを指定
(対応端末少ない)

サンプル

サンプルは Windows10 + Cygwin で表示された内容

出力文字

for ((i = 1; i <= 9; i++)); do
    printf '\e[%dm%d\e[m ' $i $i
done

2017-11-02_16h32_26.png

ブリンクはしなかった。

文字色

for ((i = 30; i <= 37; i++)); do
    printf '\e[%dm%d\e[m ' $i $i
done

2017-11-02_16h13_32.png

背景色

for ((i = 40; i <= 47; i++)); do
    printf '\e[%dm%d\e[m ' $i $i
done

2017-11-02_16h15_20.png

文字色(拡張)

for ((i = 0; i < 16; i++)); do
    for ((j = 0; j < 16; j++)); do
        hex=$(($i*16 + $j))
        printf '\e[38;5;%dm0x%02X\e[m ' $hex $hex
    done
    echo "";
done

2017-11-02_16h16_52.png

背景色(拡張)

for ((i = 0; i < 16; i++)); do
    for ((j = 0; j < 16; j++)); do
        hex=$(($i*16 + $j))
        printf '\e[48;5;%dm0x%02X\e[m ' $hex $hex
    done
    echo "";
done

2017-11-02_16h17_54.png