LoginSignup
20
19

More than 5 years have passed since last update.

シェルスクリプトのechoで色を付けるための補助コード

Posted at

echoで色を付けるための補助コード。
シェルの最初などに挿入して使う。

コード

##########################
# echo内で色を使う初期化 #
##########################
COLOR_CODE_INIT()
{
  ## echoには-eオプションを付ける

  ##この内容は変更しない#########################
  # 制御コード
  readonly C_ST="\e["  # 色開始エスケープ 
  readonly C_EN="\e[m" # 色終了エスケープ

  # 文字色/背景色
  readonly C_LETTER="3" # 文字色
  readonly C_BG="4"     # 背景色

  # カラーコード
  readonly C_BLACK="0"   # 黒
  readonly C_RED="1"     # 赤
  readonly C_GREEN="2"   # 緑
  readonly C_YELLOW="3"  # 黄
  readonly C_BLUE="4"    # 青
  readonly C_MAGENTA="5" # マゼンダ
  readonly C_CYAN="6"    # シアン
  readonly C_WHITE="7"   # 白

  # 付加属性
  readonly C_BOLD="1"           # 太字
  readonly C_LOW_INTENSITY="2"  # 弱強調
  readonly C_UNDERLINE="3"      # 下線
  readonly C_BLINK="4"          # 点滅
  readonly C_REVERSE_VIDEO="5"  # 反転
  readonly C_INVISIBLE_TEXT="6" # 非表示
  ###############################################

  # 背景色+文字色セット
  readonly C_BY="${C_BG}${C_YELLOW}"      # 背景色黄
  readonly C_BRED="${C_BG}${C_RED}"       # 背景色赤
  readonly C_LBLK="${C_LETTER}${C_BLACK}" # 文字色黒
  readonly C_LWHT="${C_LETTER}${C_WHITE}" # 文字色白

  # 実際に使用するカラーコード
  readonly C_FLUO="${C_BY};${C_LBLK}m"       # 蛍光色:背景黄、文字黒(用途:メッセージの注意を惹くための蛍光色)
  readonly C_NUMBER="${C_BY};${C_LBLK}m"     # 番号色:背景黄、文字黒(用途:番号入力の際の番号の色)
  readonly C_CAUTION="${C_BRED};${C_LWHT}m"  # 注意色:背景赤、文字白(用途:重要なことや重要なファイルパスなどの色)
}

# 色を使う
COLOR_CODE_INIT

# 背景色+文字色セット」と「# 実際に使用するカラーコード」を編集して使う。

背景色+文字色セットの編集

  1. セットする左側に文字か背景かのどちらかを書く:${C_BG}(背景色)、${C_LETTER}(文字色)
  2. 右側に指定したい色を書く:${C_RED}(赤)
  3. 実際に組み合わせた例:${C_BG}${C_RED}背景色を赤で表示
  4. これを変数にセットしておく:readonly C_BRED="${C_BG}${C_RED}"

実際に使用するカラーコード

先ほどセットした背景色+文字色を組み合わせて作る
1. 最後に必ず「m」を置く。背景色と文字色を変えたい場合は「;」で区切る:${C_BY};${C_LBLK}m
2. 変数にセットする:readonly C_CAUTION="${C_BRED};${C_LWHT}m"

使用例

  • 色を付けたい文字を${C_ST}${C_EN}で括る。
  • ${C_ST}の右側に先ほどの「実際に使用するカラーコード」で定義した変数を置く。

以下の例は対話式で番号を選ぶときの番号を黄色の背景色で強調する。
echoで色を指定するときは「echo -e」とする。

シェル
echo -e "    ${C_ST}${C_NUMBER}1${C_EN}.ほげ:"
echo    "      ○○を行う。"
echo
echo -e "    ${C_ST}${C_NUMBER}2${C_EN}.ぴよ:"
echo    "      △△を行う。"
echo
echo -e "    ${C_ST}${C_NUMBER}3${C_EN}.ふが:"
echo    "      ××を行う"
echo
echo -e "    ${C_ST}${C_NUMBER}q${C_EN}.処理を終わる"
printf "番号を選んでください(1,2,3,q):"
read input
結果
    1.ほげ:
      ○○を行う。

    2.ぴよ:
      △△を行う。

    3.ふが:
      ××を行う

    q.処理を終わる
番号を選んでください(1,2,3,q):

※「1.」~「3.」、「q.」の背景色は黄色で表示される。

あまり色を使用しすぎるとチカチカして見辛いので強調する色は2色ぐらいにする。
(Qiitaで文字の背景色とか文字色の変更ってどうやるのかな・・?)

20
19
0

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
20
19