この記事ではRubyの出力結果を色付きで表示する方法を紹介します。

ターミナルの出力結果で色を使うためにはエスケープシーケンスというものを利用します。

エスケープシーケンスはターミナル上で色を含む特定の制御を実現するための特殊な文字列です。

この記事では色の変更に関するエスケープシーケンスのみを紹介します。

1. 書き方

print "<エスケープシーケンス>文字列"

# 赤い文字を表示したい場合
print "\e[31m文字"

1つの文字列に複数のシーケンスを適用することもできる。

# 文字色:赤、背景色:緑色
print "\e[31m\e[42m文字"

末尾に\e[0mでリセットできる。

print "\e[31m赤文字\e[0m"
print "普通の色の文字"

末尾に\e[0mがないと、次の出力も変更した色のまま。

print "\e[31m赤文字"
print "これも赤文字"

2. カラーコード

例:\e[31

色の名前文字色背景色
3040
3141
3242
黄色3343
3444
マゼンタ3545
シアン3646
3747
デフォルト3949
リセット00

デフォルト:色のみをリセット

print "\e[3m\e[31mイタリック赤文字\e[39m"
print "イタリック普通の色の文字"

リセット:色やその他の効果を全てリセット

print "\e[3m\e[31mイタリック赤文字\e[0m"
print "普通の書式で普通の色の文字"

【参考】