Modoboa 1.1.1 ошибки развертывания

Есть несколько аспектов в пьесе в том, что вы спрашиваете.

Во-первых, Bash не определяет цвета. На самом деле Bash абсолютно понятия не имеет, что цвета даже существуют. Все, что он знает, это то, что вы сказали ему выводить символы \ 033 [0; 36 м . Ваш эмулятор терминала (xterm, gnome-terminal, что угодно) принимает эти персонажи и понимает: «Мне нужно начать выводить на Cyan».

Таким образом, это ваш эмулятор терминала, который понимает цвета. Ваш эмулятор терминала понимает, что \ 033 [0; 36m y Cyan, но другой эмулятор терминала может использовать совершенно другой набор символов для Cyan (хотя ни один эмулятор терминала Sane не будет охвачен стандартом и сделать это). Это причина TPUTPUT . При запуске Tutput Setaf 6 , TPUTUT будет отображать коды Escape вашего терминала для цвета 6 (Cyan) и выведите этот код Escape.
(см. Этот вопрос для получения дополнительной информации на TPUTPTAF кодов)

Теперь обратно в Bash. Как вы, возможно, заметили, когда я имею в виду Cyan Color, я использовал \ 033 [0; 36M , а не \ [\ 033 [0; 36m \] . Квадратные скобки отсутствовали. Цель квадратных скобок заключается в том, что при использовании кодов Escape (цвета) в подсказке Bash должен знать, какие символы непечатают (нулю шириной, на самом деле ничего не показывают). Таким образом, вы прилагаете непечатанные символы в \ [ \] . Если вы удалите эти символы, все, по-видимому, сначала все отлично работает, но вы начнете работать во всевозможные странности, когда ваша команда превышает ширину клеммы. Это потому, что при наборе печати Bash должен знать, когда команда должна обернуть к следующей строке. Для этого он рассчитывает ширину подсказки, а затем ширина того, насколько вы набрали.

Другое примечание относительно TPUTPUT . Cyan = "\ \ \ 033 [0; 36m \]" не то же самое, что и Cyan = «$ (Tutput Setaf 6)» . Как мы только что обсуждали, квадратные скобки актуальны к Bash, а TPUTPUT вывод только для вывода кодов Escape Terminal.

Поскольку квадратные скобки обычно актуальны только в подсказке, если вы используете цвета в выходе сценария или что-то, вы не должны их использовать. Это означает, что если вы собираетесь использовать цвета для более чем подсказки, вам нужно определить несколько переменных. Один с квадратными скобками для использования в подсказке, и один без всего остального. Хотя вы могли бы просто вручную добавить квадратные скобки каждый раз, когда вы ссылаетесь в подсказке.

Так что длинная история короткая, вы, вероятно, хотите определить что-то вроде:

local CYAN="$(tput setaf 6)" # OR CYAN="\033[0;36m"
local LIGHT_CYAN="$CYAN$(tput bold)" # OR LIGHT_CYAN="\033[1;36m"
local PROMPT_CYAN="\[$CYAN\]"
local PROMPT_LIGHT_CYAN="\[$LIGHT_CYAN\]"

1
24.04.2016, 16:08
1 ответ
[114711] Вы должны установить пакет python mysqldb, поставляемый с вашим дистрибутивом. [12166]В debian/ubuntu:[12167]
0
28.01.2020, 01:56

Теги

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