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
ベストプラクティス
- カラーテキストの後には常に
\033[0mでカラーをリセット - カラーを使用する前にstdoutがターミナルかどうかを確認
NO_COLOR環境変数の慣例を尊重- 保守性のためにカラー関数や変数を使用
ユースケース
Bashのカラー出力はデプロイスクリプト、ビルドシステム、テストランナー、システム管理スクリプト、インタラクティブインストーラーで使用されます。プロダクション品質のシェルスクリプトはカラーを使用して成功、警告、エラー、情報メッセージを区別し、ログ出力をスキャンしやすくし、開発者の生産性を向上させます。