色付きの文字をサポートする Linux 端末に印刷するにはどうすればよいでしょうか?
端末がカラーコードをサポートしているかどうかはどうすればわかりますか?
ベストアンサー1
出力する必要があるANSIカラーコードすべての端末がこれをサポートしているわけではないことに注意してください。カラーシーケンスがサポートされていない場合は、ゴミが表示されます。
例:
cout << "\033[1;31mbold red text\033[0m\n";
ここで、\033
は ESC 文字、ASCII 27 です。[
その後に が続き、 で区切られた 0 個以上の数字が続き;
、最後に文字 が続きますm
。数字は、その時点以降に切り替える色と形式を表します。
前景色と背景色のコードは次のとおりです。
foreground background
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47
さらに、以下も使用できます。
reset 0 (everything back to normal)
bold/bright 1 (often a brighter shade of the same colour)
underline 4
inverse 7 (swap foreground and background colours)
bold/bright off 21
underline off 24
inverse off 27
を参照してくださいWikipediaの表その他のあまり広くサポートされていないコードの場合。
端末がカラーシーケンスをサポートしているかどうかを確認するには、TERM
環境変数の値を確認します。環境変数には、使用されている特定の端末タイプ(例vt100
:gnome-terminal
、、、、...)が指定されているはずです。次にxterm
、screen
terminfo データベース;colors
機能を確認します。