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