Bashscript Color Code

shell
Author

Ryo Nakagami

Published

2025-09-03

Modified

2026-01-08

Warning
  • ターミナル互換性: すべてのターミナルがすべてのANSIエスケープシーケンスをサポートしているわけではありません

ANSIエスケープシーケンスの基本

Definition 1 ANSIエスケープシーケンス

  • 端末表示を制御するための「可視ではない制御文字列
  • ANSIエスケープシーケンスは \e[XXXm または \033[XXXm の形式で記述
  • \e は ESC文字(ASCII 27)を表す

syntax

ESC [ パラメータ コマンド

文字装飾を行う場合は

ESC [ <params> m

テキスト装飾コード

コード 説明
\e[0m リセット(デフォルトに戻す)
\e[1m 太字
\e[2m 薄い色(dim)
\e[3m イタリック
\e[4m 下線
\e[5m 点滅
\e[7m 反転(背景色と文字色を入れ替え)
\e[8m 非表示
\e[9m 取り消し線

標準色(前景色)

コード 表示例
\e[30m Black
\e[31m Red
\e[32m Green
\e[33m Yellow
\e[34m Blue
\e[35m マゼンタ Magenta
\e[36m シアン Cyan
\e[37m White
\e[39m デフォルト色 Default

明るい色(前景色)

コード 表示例
\e[90m 明るい黒(グレー) Bright Black
\e[91m 明るい赤 Bright Red
\e[92m 明るい緑 Bright Green
\e[93m 明るい黄 Bright Yellow
\e[94m 明るい青 Bright Blue
\e[95m 明るいマゼンタ Bright Magenta
\e[96m 明るいシアン Bright Cyan
\e[97m 明るい白 Bright White

背景色

コード
\e[40m 黒背景
\e[41m 赤背景
\e[42m 緑背景
\e[43m 黄背景
\e[44m 青背景
\e[45m マゼンタ背景
\e[46m シアン背景
\e[47m 白背景
\e[49m デフォルト背景
\e[100m 明るい黒背景(グレー)
\e[101m 明るい赤背景
\e[102m 明るい緑背景
\e[103m 明るい黄背景
\e[104m 明るい青背景
\e[105m 明るいマゼンタ背景
\e[106m 明るいシアン背景
\e[107m 明るい白背景

Best Practices

NoteRule 1. 変数定義には $'...' 形式を使用
  • エスケープ文字 \e を解釈させるため、$'...' 形式で変数を定義
# Good
RED=$'\e[31m'
GREEN=$'\e[32m'
RESET=$'\e[0m'

echo "${RED}Error message${RESET}"

# Bad - エスケープが解釈されない
RED='\e[31m'
NoteRule 2. 色変数を事前定義して再利用
  • スクリプトの冒頭で色変数を定義し、可読性を高める
#!/bin/bash

# Color definitions
readonly RED=$'\e[31m'
readonly GREEN=$'\e[32m'
readonly YELLOW=$'\e[33m'
readonly BLUE=$'\e[34m'
readonly MAGENTA=$'\e[35m'
readonly CYAN=$'\e[36m'
readonly WHITE=$'\e[37m'
readonly BOLD=$'\e[1m'
readonly RESET=$'\e[0m'

# Usage
echo "${GREEN}${BOLD}Success!${RESET}"
echo "${RED}Error occurred${RESET}"
NoteRule 3. 必ずリセットコードで終了
  • 色コードを使用した後は必ず \e[0m でリセットし、以降の出力に影響を与えないようにする
# Color definitions
readonly RED=$'\e[31m'
readonly GREEN=$'\e[32m'
readonly YELLOW=$'\e[33m'
readonly RESET=$'\e[0m'

# Helper functions
print_error() {
    echo "${RED}[ERROR]${RESET} $*" >&2
}

print_success() {
    echo "${GREEN}[SUCCESS]${RESET} $*"
}

print_warning() {
    echo "${YELLOW}[WARNING]${RESET} $*"
}

# Usage
print_error "File not found"
print_success "Operation completed"
print_warning "This feature is deprecated"
NoteRule 4. 複数の装飾を組み合わせる
  • セミコロンで区切って複数の効果を適用
# 太字 + 赤色
BOLD_RED=$'\e[1;31m'

# 下線 + 青色 + 白背景
UNDERLINE_BLUE_WHITE=$'\e[4;34;47m'

echo "${BOLD_RED}Important${RESET}"