vt100 エスケープ コードを使用して端末の背景とテキストの色を変更する方法を学びました (\033[30m
および\033[40m
)。30 - 37 または 40 - 47 を使用するために得られる 8 色に制限される代わりに、16 進数のカラー コードを使用する方法があるかどうか疑問に思っていました\033[#48FF1Fm
。これが不可能であっても驚かないでしょうが、尋ねる価値があると思いました。
3 に答える
VT-100 は古い端末で、色のエスケープコードがあることに驚きました。
いくつかの良い答えがあるこのスタックオーバーフローANSIカラーエスケープシーケンスのリストも参照してください。
ANSI/VT100 Terminal Control Escape Sequencesの次のセクションに例を示します。
Set Attribute Mode <ESC>[{attr1};...;{attrn}m
Sets multiple display attribute settings. The following lists standard attributes:
0 Reset all attributes
1 Bright
2 Dim
4 Underscore
5 Blink
7 Reverse
8 Hidden
Foreground Colours
30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 White
Background Colours
40 Black
41 Red
42 Green
43 Yellow
44 Blue
45 Magenta
46 Cyan
47 White
ただし、見つけた標準色だけでなく、デバイスのサポートによっては、カラー パレット メカニズムのように見えるものもあるようです。
ただし、この記事Bash のヒント: 色と書式設定 (ANSI/VT100 コントロール シーケンス)を参照して、追加のリンクを含むより集中的なリストを参照してください。
256 の前景色の場合、エスケープ シーケンスは ”[38;5;ColorNumberm” です。ここで、色番号 ColorNumber は提供されたテーブルからのものです。色番号の後に「m」が必要な文字のようです。
256 色の背景色の場合、エスケープ シーケンスは「[48;5;ColorNumberm」です。
24 ビット色を使用できます (16 進数の色は必ずしも 24 ビットであるとは限らず、24 ビット色を表すのに 16 進数は必要ないことに注意してください)。
printf "\x1b[${bg};2;${red};${green};${blue}m\n"
例:
printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
ただし、端末がサポートしている必要があることに注意してください (vt100 はサポートしていませんが、一部のソフトウェア ターミナル エミュレータはサポートしています)。
かなり広くサポートされている 256 色モードもあります。16 色以上が必要な場合は、おそらくこれが最善の策です。
ソース: