1. ホーム
  2. c++

[解決済み] Linuxのターミナルにカラーテキストを出力するにはどうしたらいいですか?

2022-03-16 12:52:22

質問

色付きの文字をサポートしているLinuxのターミナルに印刷するにはどうしたらいいですか?

端末がカラーコードに対応しているかどうかは、どのように見分ければよいですか?

解決方法は?

を出力する必要があります。 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

をご覧ください。 ウィキペディアの表 は、あまり広くサポートされていない他のコードについてです。


お使いの端末がカラーシーケンスに対応しているかどうかを判断するために TERM 環境変数。これは、使用する特定の端末の種類を指定するものです (例. vt100 , gnome-terminal , xterm , screen , ...). 次にそれを terminfoデータベース をチェックします。 colors ケーパビリティを提供します。