Как вывести полужирный текст в 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)