Я пишу сценарий Bash, который печатает некоторый текст на экран:
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"
Подробнее об управляющих последовательностях ansi, например, здесь: ascii-table.com/ansi-escape-sequences-vt-100.php
Теоретически так:
# 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-sequences-for-writing-text.html )