BashのANSIカラー - シェルスクリプトでカラーテキストを表示する方法

Bashシェルスクリプトでのカラー出力の完全ガイド。echo -e、printf、tput、$'...'構文でカラーテキストを表示。再利用可能なカラー変数定義を含む。

Language Examples

詳細な説明

Bashスクリプトでのカラー出力

BashはANSIエスケープシーケンスを使用してカラーテキストを出力する複数の方法を提供します。このガイドでは一般的な方法とベストプラクティスをすべてカバーします。

方法1: echo -e

-eフラグはエスケープシーケンスの解釈を有効にします:

echo -e "\033[31m赤いテキスト\033[0m"
echo -e "\033[1;32m太字緑\033[0m"

方法2: printf

printfはデフォルトでエスケープシーケンスを解釈します:

printf "\033[34m青いテキスト\033[0m\n"
printf "\033[1;33m%s\033[0m\n" "警告メッセージ"

方法3: $'...'クォーティング

ANSI-Cクォーティングはエスケープシーケンスを直接使用可能:

echo $'\e[35mマゼンタテキスト\e[0m'

再利用可能なカラー変数

スクリプトの先頭でカラー変数を定義:

# カラー定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
BOLD='\033[1m'
DIM='\033[2m'
NC='\033[0m'  # No Color(リセット)

# 使い方
echo -e "${RED}エラー: ファイルが見つかりません${NC}"
echo -e "${GREEN}成功: ビルド完了${NC}"
echo -e "${YELLOW}警告: ディスク容量不足${NC}"
echo -e "${BOLD}重要:${NC} これをよく読んでください"

カラー関数パターン

# 再利用可能なカラー関数
red()    { echo -e "\033[31m$*\033[0m"; }
green()  { echo -e "\033[32m$*\033[0m"; }
yellow() { echo -e "\033[33m$*\033[0m"; }
bold()   { echo -e "\033[1m$*\033[0m"; }

# 使い方
red "エラー: 何か失敗しました"
green "すべてのテストに合格"
yellow "警告: 非推奨機能"

カラーサポートの検出

# 出力がターミナルでない場合はカラーを無効化
if [ ! -t 1 ]; then
  RED=''
  GREEN=''
  YELLOW=''
  NC=''
fi

ベストプラクティス

  1. カラーテキストの後には常に\033[0mでカラーをリセット
  2. カラーを使用する前にstdoutがターミナルかどうかを確認
  3. NO_COLOR環境変数の慣例を尊重
  4. 保守性のためにカラー関数や変数を使用

ユースケース

Bashのカラー出力はデプロイスクリプト、ビルドシステム、テストランナー、システム管理スクリプト、インタラクティブインストーラーで使用されます。プロダクション品質のシェルスクリプトはカラーを使用して成功、警告、エラー、情報メッセージを区別し、ログ出力をスキャンしやすくし、開発者の生産性を向上させます。

試してみる — ANSI Color Code Reference

フルツールを開く