Я можу змінити колір через перевагу, але як я можу змінити колір тла та колір тексту терміналу через командний рядок?
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 істинні послідовності кольорів; однак xtermокруглює фактичний колір до найближчого у своїй 256-кольоровій палітрі. gnome-terminalвідображає точний справжній колір, вказаний у послідовності евакуації.
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: Блимає (не працює в більшості терміналів, крім XTerm): echo -e "Normal \e[5mBlink"7: Зворотний / зворотний: echo -e "Normal \e[7minverted"8: Приховано (корисно для конфіденційної інформації): 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: Cyan37: Світло-сірий90: Темно-сірий91: Світло-червоний92: Світло-зелений93: Світло-жовтий94: Блакитний95: Світло-пурпурна / рожева96: Світло-блакитний97: Білий49: Колір тла за замовчуванням (зазвичай чорний або синій)40: Чорний41: Червоний42: Зелений43: Жовтий44: Синій45: Пурпуровий / фіолетовий46: Cyan47: Світло-сірий (не використовуйте з білим переднім планом)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-терміналу, і вступає в силу негайно на всіх вкладках і вікнах одного і того ж профілю. Я не думаю, що ОП шукала такої поведінки.
Різні кольорові коди, які використовуються для отримання кольорового виводу, також можуть використовуватися для отримання кольорових фонів :
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-значень кольорів переднього плану та фонових кольорів за замовчуванням, використовуючи послідовності виходу 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, це все ще впливає лише на поточний термінал.