Как сделать: подчеркивание, жирный шрифт, курсив, зачеркивание, цвет, фон и размер в терминале Gnome?

Как сделать: подчеркивание, жирный шрифт, курсив, зачеркивание и цвет в терминале Gnome?

Жирный

Курсивный

подчеркивать

ударьте по нему, как по горячему

Цвет

background

font < (это моно, если вы не могли сказать)

размер

Терминалы и эмуляторы терминалов ANSI/VT100 способны не только отображать черно-белый текст; они могут отображать цвета и форматированный текст благодаря escape-последовательностям. Эти последовательности состоят из Escape-символа (часто представленного "^[" или "Esc"), за которым следуют некоторые другие символы: "Esc[FormatCodem".

В Bash символ может быть получен с помощью следующих синтаксисов:

\e\033\x1B

enter image description here

Команды (для удобства копирования и вставки):

echo -e "\e[1mbold\e[0m"echo -e "\e[3mitalic\e[0m"echo -e "\e[3m\e[1mbold italic\e[0m"echo -e "\e[4munderline\e[0m"echo -e "\e[9mstrikethrough\e[0m"echo -e "\e[31mHello World\e[0m"echo -e "\x1B[31mHello World\e[0m"

Источник (включая все типы цветовых кодов переднего плана/фона): http://misc.flogisoft.com/bash/tip_colors_and_formatting

Чтобы расширить ответ Сильвена, некоторые вспомогательные функции:

ansi()          { echo -e "\e[${1}m${*:2}\e[0m"; }bold()          { ansi 1 "$@"; }italic()        { ansi 3 "$@"; }underline()     { ansi 4 "$@"; }strikethrough() { ansi 9 "$@"; }red()           { ansi 31 "$@"; }

Затем

enter image description here

GNOME Terminal 3.28 (VTE 0.52), дебютирующий в Ubuntu 18.04 LTS, добавляет поддержку еще нескольких стилей, включая фигурное и цветное подчеркивание, как в Kitty, overline, как в Konsole, и, наконец, всеми любимый или ненавистный атрибут blink.

Они также автоматически работают в любом другом эмуляторе терминала на базе VTE (например, Tilix, Terminator, Xfce4-terminal, Guake и т.д.), Учитывая, что VTE имеет по крайней мере версию 0.52.

Вот список, демонстрирующий стандартные escape-последовательности, а также дополнения GNOME Terminal (VTE). Обратите внимание, что для каждой открывающей последовательности я также показываю закрывающую последовательность только этого свойства, а не общую \e[m или \e[0m это отключает все специальные режимы.

echo -e '\e[1mbold\e[22m'echo -e '\e[2mdim\e[22m'echo -e '\e[3mitalic\e[23m'echo -e '\e[4munderline\e[24m'echo -e '\e[4:1mthis is also underline (new in 0.52)\e[4:0m'echo -e '\e[21mdouble underline (new in 0.52)\e[24m'echo -e '\e[4:2mthis is also double underline (new in 0.52)\e[4:0m'echo -e '\e[4:3mcurly underline (new in 0.52)\e[4:0m'echo -e '\e[5mblink (new in 0.52)\e[25m'echo -e '\e[7mreverse\e[27m'echo -e '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'echo -e '\e[9mstrikethrough\e[29m'echo -e '\e[53moverline (new in 0.52)\e[55m'echo -e '\e[31mred\e[39m'echo -e '\e[91mbright red\e[39m'echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[39m'echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[39m'echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) (new in 0.52)\e[39m'echo -e '\e[38:2:240:143:104mtruecolor, rarely used incorrect format (might be removed at some point)\e[39m'echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[39m'echo -e '\e[46mcyan background\e[49m'echo -e '\e[106mbright cyan background\e[49m'echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[49m'echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[49m'echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) (new in 0.52)\e[49m'echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[49m'echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[49m'echo -e '\e[21m\e[58:5:42m256-color underline (new in 0.52)\e[59m\e[24m'echo -e '\e[21m\e[58;5;42m256-color underline (new in 0.52)\e[59m\e[24m'echo -e '\e[4:3m\e[58:2::240:143:104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'echo -e '\e[4:3m\e[58:2:240:143:104mtruecolor underline (new in 0.52) (might be removed at some point) (*)\e[59m\e[4:0m'echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'

(*) Значения Truecolor для подчеркивания слегка приближены.

И немного странный, который не совсем вписывается в эту картину, поскольку это скорее функциональность, чем стиль, но, вероятно, стоит упомянуть здесь, это гиперссылка поддержка, разработанная совместно с iTerm2, доступна начиная с GNOME Terminal 3.26 (VTE 0.50):

echo -e '\e]8;;http://askubuntu.com\e\\hyperlink\e]8;;\e\\'

Вот скриншот, демонстрирующий результат:Rendering in gnome-terminal 3.28

То, что еще не было рассмотрено, - это сочетание из двух или трех параметров, например. жирный и подчеркивать, в предопределенном цвете. Это достигается с помощью 3-полосного синтаксиса, например:

~$ printf "\e[3;4;33mthis is a test\n\e[0m"

приведет к тому, что надпись "это тест" будет напечатана желтым цветом (33m), курсивом (3m) И подчеркнутый (4m).
Обратите внимание, что это нет необходимо повторить \e[ каждый раз.
Обратите также внимание, что (аналогично Сильвену) Я также добавил \e[0m каждый раз сбрасывать настройки, потому что в противном случае желтый цвет и стиль шрифта останутся активными в терминале! Излишне говорить, что вам абсолютно необходимо следить за тем, чтобы они были сброшены в скриптах, потому что пользователям, использующим ваши скрипты, может не понравиться, если ваш скрипт постоянно изменяет их настройки цвета + стиля в терминале!

Замените эти жестко закодированные последовательности на:

tput smul # set underlinetput rmul # remove underlinetput smso # set bold ontput rmso # remove boldtput setaf 1 #redtput setaf 2 #green...tput cup 0 0 # move to pos 0,0

Полное описание этих команд приведено в разделах "man terminfo" и "man tput".

Пример :

function f_help{  c_green=$(tput  setaf 2      2>/dev/null)  c_reset=$(tput  sgr0         2>/dev/null)  c_bold=$(tput smso           2>/dev/null)  echo "${c_bold}DESCRIPTION${c_reset} : .... ${c_green}My green text${c_reset}My plain text"}

И что именно вы хотите изменить? Приглашение, текст, который вы вводите, вывод ваших команд?

Если бы он поддерживал “Слабый”, я бы переключился. :frowning:

на самом деле экспортируйте PS1. Хотя я бы хотел, чтобы это было и для базового echo.

Вы можете использовать "echo -e`