Я могу изменить цвет через настройки, но как я могу изменить цвет фона и цвет текста терминала через командную строку?
dconf. Ответ на подобный вопрос я уже писал ранее: askubuntu.com/a/628129/295286
\033[00;34mFOO\033[00m
Я могу изменить цвет через настройки, но как я могу изменить цвет фона и цвет текста терминала через командную строку?
dconf. Ответ на подобный вопрос я уже писал ранее: askubuntu.com/a/628129/295286
\033[00;34mFOO\033[00m
Ответы:
На некоторых XTerm / ANSI-совместимых терминалах (например, xtermи gnome-terminal) вы можете устанавливать цвета, используя палитру, превышающую палитру 8/16 цветов по умолчанию (например, используя палитру 88 цветов, 256 цветов или 16777216 цветов (RGB) , оба , xtermи gnome-terminalподдерживают как 256-цвета и 16777216-цвета (RGB) палитры); Имейте в виду, что оболочка может переопределить это (это так, например, для zsh).
Вот скрипт для перечисления цветов в 256-цветовой палитре вместе с их цветовым кодом ANSI в XTerm / ANSI-совместимых терминалах с поддержкой 256-цветовой палитры:
#!/bin/bash
for((i=16; i<256; i++)); do
printf "\e[48;5;${i}m%03d" $i;
printf '\e[0m';
[ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done
В зависимости от того, хотите ли вы применить цвет к переднему плану или к фону, используйте <fg_bg>значение 38или 48(соответственно) в следующей команде:
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
Например, чтобы установить цвет переднего плана ( <fg_bg>= 38) на красный ( <ANSI_color_code>= 196) и цвет фона ( <fg_bg>= 48) на черный ( <ANSI_color_code>= 0):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
Необходимо перерисовать подсказку, используя, printf '\e[K'чтобы цвет фона применялся ко всей строке и чтобы цвет переднего плана применялся к курсору:
То же самое можно сделать, используя значения RGB вместо цветовых кодов ANSI в совместимом терминале; в зависимости от того, хотите ли вы применить цвет к переднему плану или к фону, используйте <fg_bg>значение 38или 48(соответственно) в следующей команде:
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
Например, чтобы установить цвет переднего плана ( <fg_bg>= 38) на красный ( <R>= 255, <G>= 0, <B>= 0) и цвет фона ( <fg_bg>= 48) на черный ( <R>= 0, <G>= 0, <B>= 0):
printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'
Опять же, необходимо перерисовать приглашение, используя printf '\e[K'для того, чтобы цвет фона применялся ко всей строке и чтобы цвет переднего плана применялся к курсору:
Используя любой из этих методов, вы можете использовать printf '\e[0m'для сброса всех атрибутов:
xtermи gnome-terminalраспознают \ e [38/48; 2; R; G; Bm истинные цветовые escape-последовательности; однако xtermокругляет фактический цвет до ближайшего в его 256-цветовой палитре. gnome-terminalотображает точный истинный цвет, заданный в escape-последовательности.
xterm), если курсор оказывается на самом правом краю (визуально отображается в крайнем правом столбце, но логически уже за этим, поскольку символ уже напечатан в крайнем правом столбце), эта последняя буква удаляется. См., Например, bugzilla.gnome.org/show_bug.cgi?id=740789 или savannah.gnu.org/bugs/?36831 .
Информация, найденная на этой странице , за исключением столбца предварительного просмотра:
Последовательности состоят из символа Escape (часто обозначаемого как « ^[» или « <Esc>»), за которым следуют некоторые другие символы: « ^[FCm» (где FCодно из чисел в маркированном списке ниже).
В bash, то Escкод может быть одним из следующих способов :
\e\033 (Восьмеричное)\x1B (Шестнадцатеричное)Примечание 1:\e[0m последовательность « » удаляет все атрибуты (форматирование и цвета). Это может быть хорошей идеей, чтобы добавить его в конце каждого цветного текста.
Примечание 2: цвета переднего плана и фона могут различаться в зависимости от конфигурации терминала, и поддерживаются не все цвета .
0Сбросить / удалить все атрибуты модификатора, переднего плана и фона: echo -e "\e[0mNormal Text"1: Жирный / Яркий: echo -e "Normal \e[1mBold"2: Dim: echo -e "Normal \e[2mDim"4: Подчеркнуто: echo -e "Normal \e[4mUnderlined"5: Blink (не работает в большинстве терминалов, кроме XTerm): echo -e "Normal \e[5mBlink"7: Обратный / инвертированный: echo -e "Normal \e[7minverted"8: Hidden (полезно для конфиденциальной информации): echo -e "Normal \e[8mHidden Input"21: Сбросить / удалить жирный / яркий: echo -e "Normal \e[1mBold \e[21mNormal"22: Сброс / удаление тусклых: echo -e "Normal \e[2mDim \e[22mNormal"24: Сброс / удаление подчеркивания: echo -e "Normal \e[4mUnderlined \e[24mNormal"25: Сбросить / убрать мигание: echo -e "Normal \e[5mBlink \e[25mNormal"27: Сброс / удаление реверса / инвертирования: echo -e "Normal \e[7minverted \e[27mNormal"28: Сброс / удаление скрытого: echo -e "Normal \e[8mHidden \e[28mNormal"39: По умолчанию (обычно зеленый, белый или светло-серый): echo -e "Default \e[39mDefault"30: Черный: echo -e "Default \e[30mBlack"(лучше всего сочетается с цветом фона: echo -e "Default \e[30;107mBlack on white")31: Красный (не используйте с зеленым фоном)32: Зеленый33: Желтый34: Синий35: Пурпурный / фиолетовый36: Голубой37: Светло-серый90: Темно-серый91: Светло-красный92: Светло-зеленый93: Светло-желтого94: Светло-синий95: Светло-пурпурный / розовый96: Светло-голубой97: Белый49: Цвет фона по умолчанию (обычно черный или синий)40: Черный41: Красный42: Зеленый43: Желтый44: Синий45: Пурпурный / фиолетовый46: Голубой47: Светло-серый (не используйте с белым передним планом)100: Темно-серый (не используйте с черным передним планом)101: Светло-красный102: Светло-зеленый (не используйте с белым передним планом)103: Светло-желтый (не используйте с белым передним планом)104: Светло-голубой (не используйте со светло-желтым передним планом)105: Светло-пурпурный / розовый (не используйте со светлым передним планом)106: Светло-голубой (не используйте с белым передним планом)107: Белый (не используйте со светлым передним планом)Для одновременной установки цветов переднего плана и фона используйте форму echo -e "\e[S;FG;BGm". Например: echo -e "\e[1;97;41m"(жирный белый передний план на красном фоне)
256 вариантов цвета см. На исходной странице.
Если предполагается случайное изменение цвета :
Вы можете использовать команду setterm :
setterm -term linux -back <background_colour> -fore <text_color> -clear
из цветов, которые вы можете выбрать (как передний, так и задний):
black|blue|green|cyan|red|magenta|yellow|white|default
для большего количества вариантов:
setterm -help
В 14.04 я не нашел возможности использовать dconfдля установки цветов или терминала. Однако вы можете использоватьgconftool
Сначала вам нужно получить имя вашего профиля:
gconftool-2 --get /apps/gnome-terminal/global/profile_list
Затем, чтобы установить цвет текста вашего профиля:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
например, чтобы установить цвет текста на белый
То же самое с цветом фона:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
например, чтобы установить цвет фона на черный
В качестве альтернативы, чтобы задать название цвета (цветов), вы можете просто использовать whiteили greenиз той же палитры, что и команда setterm, например:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"не менее, сделал свое дело .
gconftool-2(для Ubuntu 14.04 и, возможно, нескольких последующих выпусков), или dconfили gsettingsв более новых версиях Ubuntu измените настройки gnome-терминала и сразу же вступите в силу для всех вкладок и окон одного и того же профиля. Я не думаю, что OP искал такое поведение.
Различные цветовые коды, которые используются для получения цветного вывода, также можно использовать для получения цветного фона :
40 black
41 red
42 green
43 yellow
44 blue
45 magenta
46 cyan
47 white
Поэтому следующая команда окрашивает мой фон в красный:
$ echo -e '\e[0;41m'
В зависимости от оболочки, эмулятора терминала и т. Д. Вам может не понадобиться -e.
Посмотрите ответ kos для переключения переднего плана или фона на определенный цвет палитры, или даже прямой цвет RGB в некоторых терминалах. Эффект такой последовательности сохраняется до тех пор, пока не будет выбран другой цвет (или он не вернется к значению по умолчанию)
Другой подход, поддерживаемый некоторыми эмуляторами терминала, заключается в переопределении точных значений RGB для цветов переднего плана и фона терминала по умолчанию с использованием escape-последовательностей OSC 10/11:
echo -ne '\e]10;#123456\e\\' # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\' # set default background to #abcdef
Это может длиться намного дольше (до тех пор, пока не будет отменено другим OSC 10/11 или не будет сброшено через OSC 110/111), но, в отличие от подхода dconf, это по-прежнему влияет только на текущий терминал.