Ответы:
Наиболее совместимый способ сделать это - использовать 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 )