Как я могу изменить цвета своего xterm использование escape-последовательностей Ansi?

Я хотел бы изменить цвета (фон, шрифт, передний план) моего xterm от командной строки. Я услышал, что это может быть сделано с помощью escape-последовательностей ANSI.

Если это возможно:

  • Как это сделано?
  • Я могу использовать названия цвета, или я должен использовать их коды RGB?
25
задан 13.04.2011, 09:49

1 ответ

Escape-последовательности ANSI состоят из последовательности символов, начинающихся с Символа ESC, символа 27. Следующий символ часто является (хотя не всегда) открытой квадратной скобкой: [

Команда эха может отправить символы ESC, если Вы указываете -e и используйте \e для Escape.

Стандарт ANSI определяет 8 цветов, плюс яркий режим, давая в общей сложности 16 возможностей. Последовательность:

\e[<number>m

Где <number> один из:

Передний план:

  • 30 Черных цветов
  • 31 Красный
  • 32 Green
  • 33 Желтого
  • 34 Синих
  • 35 Пурпурных
  • 36 Цианов
  • 37 Белых

Фон:

  • 40 Черных цветов
  • 41 Красный
  • 42 Green
  • 43 Желтого
  • 44 Синих
  • 45 Пурпурных
  • 46 Цианов
  • 47 Белых

  • 0 Сброса все

  • 1 Полужирное

Таким образом сделать Ваш приоритетный красный и Ваше образование желтыми:

$ echo -e "\e[31m\e[43m"

И включить полужирный:

$ echo -e "\e[1m"

Конечно, можно объединить их всех вместе:

$ echo -e "\e[31m\e[43m\e[1m"

Существуют много много других управляющих кодов для того, чтобы сделать другие вещи.

Например - очищают экран и перемещают курсор в верхнее левое:

$ echo -e "\e[2J\e[1;1H"

Который полезен при изменении цвета:

$ echo -e "\e[31m\e[43m\e[1m\e[2J\e[1;1H"

Который изменит цвета, очистить экран и поместить курсор в верхнее левое. Ну, почти верхнее левое. Echo вставляет возврат каретки, таким образом, он спускает строку. Можно добавить -n отозваться эхом для предотвращения этого, если Вы являетесь суетливыми.

Если Вы портите все это и не видите то, что Вы вводите Вас, может сбросить терминальные цвета к нормальному путем нажатия:

Ctrl+v [ Возврат на 0 м

В то, что Вы надеетесь, является командной строкой. Это будет хныкать о неизвестной команде, но Вы сможете видеть то, что Вы делаете снова.

27
ответ дан 07.12.2019, 09:36

Теги

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