How does one output bold text in Bash?
In order to apply a style on your string, you can use a command like:
echo -e '\033[1mYOUR_STRING\033[0m'
Explanation:
- echo -e - The
-e
option means that escaped (backslashed) strings will be interpreted - \033 - escaped sequence represents beginning/ending of the style
- lowercase m - indicates the end of the sequence
- 1 - Bold attribute (see below for more)
- [0m - resets all attributes, colors, formatting, etc.
The possible integers are:
- 0 - Normal Style
- 1 - Bold
- 2 - Dim
- 3 - Italic
- 4 - Underlined
- 5 - Blinking
- 7 - Reverse
- 8 - Invisible
The most compatible way of doing this is using tput
to discover the right sequences to send to the terminal:
bold=$(tput bold)
normal=$(tput sgr0)
then you can use the variables $bold
and $normal
to format things:
echo "this is ${bold}bold${normal} but this isn't"
gives
this is bold but this isn't
I assume bash is running on a vt100-compatible terminal in which the user did not explicitly turn off the support for formatting.
First, turn on support for special characters in echo
, using -e
option. Later, use ansi escape sequence ESC[1m
, like:
echo -e "\033[1mSome Text"
More on ansi escape sequences for example here: ascii-table.com/ansi-escape-sequences-vt-100.php