Reputation: 3810
I'm writing a Bash script that prints some text to the screen:
echo "Some Text"
Can I format the text? I would like to make it bold.
Upvotes: 365
Views: 305976
Reputation: 28000
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
Note that normal
will turn off all formatting (so if you have other formatting - such as colours - that will be disabled, too).
Upvotes: 608
Reputation: 14467
In order to apply a style on your string, you can use a command like:
echo -e '\033[1mYOUR_STRING\033[0m'
Explanation:
-e
option means that escaped (backslashed) strings will be interpretedThe possible integers are:
All this is per ANSI but is implemented by absolute majority of terminal emulators out there. An alternative way to style output is to rely on terminfo through use of the tput
command. The latter will most likely output escape sequences which are ANSI anyway, unless you're at a really obscure and/or exotic type of terminal.
Upvotes: 216
Reputation: 18485
In theory like so:
# 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.
But in practice it may be interpreted as "high intensity" color instead.
(source: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html)
Upvotes: 25
Reputation: 11784
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
Upvotes: 53