2015-06-20 4 views
1

Может ли кто-нибудь указать мне на какую-либо документацию в Интернете, которая объясняет, как оболочка bash будет разделять следующие строки, которые задают цвета или объясняют из представления парсеров, как следующие строки будут прочитаны?Разбор текста, задающего цвета в оболочке bash

  • Я знаю, что 32 причина темно-зеленый цвет, который будет отображаться
  • 34 причин темно-синий, чтобы быть displaied

но то, что это первая \ 033 используется для и что дозировать «т» после того, как 32 и 33 делают?

green ="\[\033[0;32m\]" 
blue="\[\033[0;34m\]" 

и в конечном счете экспортировать эти и другие предметы для PS1

ответ

1

Лучшее место, чтобы начать чтение для Баш является Bash Prompt HOWTO, а именно в разделе Bash Prompt Escape Sequences.

персонажей \033 (так называемый или ESC побег), а затем левой квадратной скобки [ является способ 7-битовых символов образуют последовательность инициатора ECMA-48 управления (CSI). То, что запускает контрольную последовательность, которая продолжается до окончательного символа (должна быть от диапазона 64-126), которая в этом случае равна м. Конечный символ - это одна из вещей, которая определяет, какой тип управляющей последовательности - —, это SGR (установка графического исполнения).

Хотя большинство последних символов являются алфавитными (A-Z или a-z), некоторые из них не являются. XTerm Control Sequences перечислены некоторые, например:

CSI Pm ` Character Position Absolute [column] (default = [row,1]) 
      (HPA). 
CSI Pt; Pl; Pb; Pr $ { 
      Selective Erase Rectangular Area (DECSERA), VT400 and up. 
      Pt; Pl; Pb; Pr denotes the rectangle. 
CSI Ps ' | 
      Request Locator Position (DECRQLP). 
CSI Pm ' } 
      Insert Ps Column(s) (default = 1) (DECIC), VT420 and up. 
CSI Pm ' ~ 
      Delete Ps Column(s) (default = 1) (DECDC), VT420 and up. 

Для примера

green ="\[\033[0;32m\]" 

Принимая это кроме:

  • \[ и \] сказать Баш скидка прилагающихся символов (не считать их печатные символы с шириной). Это зависит от bash. Если вы использовали zsh, есть different way, чтобы сделать то же самое. Большинство оболочек (таких как ksh) не предоставляют эту функцию.
  • 0 в последовательности SGR сбрасывает любой атрибут (например, цвет), который могла бы установить последовательность SGR.
  • Точка с запятой ; отделяет ее от следующего параметра, который является особым цветом.
  • ECMA-48 определяет 8 цветов переднего плана и 8 цветов (часто называемых «цветами ANSI», хотя прошло много времени с того, что был соответствующий стандарт ANSI).
+0

Стоит добавить, что помимо внешней '\ [\]' упаковки это последовательность не имеет значения bash - это терминальная последовательность. Поэтому он сообщает xterm, konsole или что-то другое, что ваша программа эмуляции терминала должна изменить текущий цвет.Это то, что означает SGR - это команда «set graphics rendition» для терминала, а команды терминалов обычно начинаются с '\ 033' и заканчиваются буквой. –