2

vt100 エスケープ コードを使用して端末の背景とテキストの色を変更する方法を学びました (\033[30mおよび\033[40m)。30 - 37 または 40 - 47 を使用するために得られる 8 色に制限される代わりに、16 進数のカラー コードを使用する方法があるかどうか疑問に思っていました\033[#48FF1Fm。これが不可能であっても驚かないでしょうが、尋ねる価値があると思いました。

4

3 に答える 3

0

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」です。

于 2015-09-11T14:09:36.830 に答える
0

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 色以上が必要な場合は、おそらくこれが最善の策です。

ソース:

https://gist.github.com/XVilka/8346728

于 2015-09-11T14:09:58.457 に答える