Как экранировать все специальные символы, чтобы иметь возможность печатать строку как есть?

Вашу управляющую последовательность \e[30;1;45m, возможно, легче понять как слияние трех последовательностей:

  1. \e[30m--это означает «черный передний план»
  2. \e[1m--это означает «яркий передний план»
  3. \e[45m--это означает «пурпурный фон»

Теперь эти цветовые последовательности ограничены 8 цветами

  • черный
  • красный
  • зеленый
  • желтый
  • синий
  • пурпурный
  • голубой
  • белый

Это традиционные цвета ANSI.

Однако есть последовательности, которые позволяют выбрать 256 цветов, если ваш терминал их поддерживает.

\e[38;5;###m, где ###— число от 0 до 255, выбирает цвет переднего плана.

\e[48;5;###mаналогичным образом выбирает цвет фона.

Так что, возможно, \e[38;5;0;1;48;5;92mможет быть близко к тому, что вы хотите.

Примечание. :Если вы используете 256-цветную настройку фона, вам также необходимо использовать 256-цветную настройку переднего плана.

FWIW, следующий скрипт Python покажет все цвета фона, что поможет вам выбрать нужный цвет.

import sys
for i in range(0, 16):
    for j in range(0, 16):
        code = str(i * 16 + j)
        sys.stdout.write(u"\u001b[48;5;" + code + "m " + code.ljust(4))
    print u"\u001b[0m"

(взято изhttp://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#background-colors)

2
23.03.2021, 14:15
0 ответов

Теги

Похожие вопросы