Как вывести полужирный текст в Bash?

Я пишу Bash script, который печатает текст на экране:

echo "Some Text"

Можно ли форматировать текст? Я хотел бы сделать это смелым.

Ответ 1

Самый совместимый способ сделать это - использовать tput для поиска правильных последовательностей для отправки на терминал:

bold=$(tput bold)
normal=$(tput sgr0)

то вы можете использовать переменные $bold и $normal для форматирования:

echo "this is ${bold}bold${normal} but this isn't"

дает

это жирный, но это не

Ответ 2

Я предполагаю, что bash работает на терминале, совместимом с vt100, в котором пользователь явно не отключил поддержку форматирования.

Сначала включите поддержку специальных символов в echo, используя опцию -e. Позже используйте escape-последовательность ansi ESC[1m, например:

echo -e "\033[1mSome Text"

Подробнее о escape-последовательностях ansi, например, здесь: ascii-table.com/ansi-escape-sequences-vt-100.php

Ответ 3

Чтобы применить стиль к вашей строке, вы можете использовать команду вроде:

echo -e '\033[1mYOUR_STRING\033[0m'

Объяснение:

  • echo -e - опция -e означает, что экранированные (с обратной косой чертой) строки будут интерпретироваться
  • \ 033 - экранированная последовательность представляет начало/конец стиля
  • строчная m - указывает на конец последовательности
  • 1 - Атрибут Bold (подробнее см. Ниже)
  • [0m - сбрасывает все атрибуты, цвета, форматирование и т.д.

Возможные целые числа:

  • 0 - нормальный стиль
  • 1 - жирный
  • 2 - тусклый
  • 3 - Курсив
  • 4 - подчеркнуто
  • 5 - мигает
  • 7 - обратный
  • 8 - Невидимый

Ответ 4

По идее так:

# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line

# Using tput
tput bold 
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL

# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line. 

Но на практике его можно интерпретировать как цвет "высокой интенсивности".

(источник: http://unstableme.blogspot.com/2008/01/ansi-escape-sequence-for-writing-text.html)