Ответы:
Наиболее совместимый способ сделать это - использовать tputправильные последовательности для отправки на терминал:
bold=$(tput bold)
normal=$(tput sgr0)
тогда вы можете использовать переменные $boldи $normalформатировать вещи:
echo "this is ${bold}bold${normal} but this isn't"
дает
это смелый, но это не
tput smul
tputотличная команда с большим количеством команд для множества различных задач.
motdфайлом. Как / где бы я определяю $boldи $normalпеременные в этом случае?
Чтобы применить стиль к вашей строке, вы можете использовать команду вроде:
echo -e '\033[1mYOUR_STRING\033[0m'
Объяснение:
-eопция означает, что экранированные (с обратной косой чертой) строки будут интерпретироватьсяВозможные целые числа:
[0mпредлагает функциональность, и это хорошо объясняет
\033[0m
3- курсивом , по крайней мере, в консоле
Я предполагаю, что bash работает на vt100-совместимом терминале, в котором пользователь явно не отключил поддержку форматирования.
Во-первых, включите поддержку специальных символов echo, используя -eопцию. Позже, используйте escape-последовательность ANSI ESC[1m, например:
echo -e "\033[1mSome Text"
Подробнее об экранирующих последовательностях ANSI, например, здесь: ascii-table.com/ansi-escape-sequence-vt-100.php
echo -e "\033[1mSome Text\033[0m"противном случае следующие строки вашего терминала будут также выделены жирным шрифтом
\033вы можете использовать \eкакecho -e "\e[1msome text\e[0m"
По идее так:
# 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 )