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}"