Open In App

How to Print Colored Text to the Linux Terminal

Last Updated : 13 Sep, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Printing colored text to the Linux terminal can greatly enhance the visual appeal and readability of your command-line applications or scripts. While the terminal traditionally displays text in monochrome, incorporating colors can provide crucial context, highlight important information, or simply add a touch of aesthetic appeal.

Here, we will explore various methods to print colored text to the Linux terminal, covering everything from basic ANSI escape sequences to more advanced techniques using libraries like 'tput' and 'terminfo'.

Methods to Print Colored Text to the Linux Terminal

Here are some of the most common and effective methods to print colored text in the Linux terminal:

1. Using ANSI Escape Sequences

ANSI escape sequences are a standard for controlling text formatting and colors in terminal environments. They consist of special character sequences preceded by the escape character (\e or \033). Here’s how you can use ANSI escape sequences to print colored text:

echo -e "\e[31mThis text is red\e[0m"
Using ANSI Escape Sequences
changing text to red

In this example:

  • \e[31m sets the text color to red.
  • \e[0m resets the text formatting to the default.

Common ANSI Color Codes:

ANSI CodeColor
31Red
32Green
33Yellow
34Blue
35Magenta
36Cyan

2. Using the 'tput' Command

The tput command is a POSIX standard utility that enables terminal-related operations, including setting text attributes and colors. Here's how you can use tput to print colored text:

Create script using vim editor.

vim colorchangingtext
#!/bin/bash
RED=$(tput setaf 1) RESET=$(tput sgr0) echo "${RED}This text is red${RESET}"

Executing Script

bash colorchangingtext
using tput
using tput

In this example:

  • 'tput setaf 1' sets the foreground color to red.
  • 'tput sgr0' resets text formatting.

You can replace 1 with other color codes as per the tput documentation.

Color Codes for tput:

CodeColor
0Black
1Red
2Green
3Yellow
4Blue
5Magenta
6Cyan
7Whit

3. Using the Terminfo Database

The terminfo database contains information about the capabilities of various terminals, including color support. You can leverage this database to print colored text dynamically based on the terminal’s capabilities. Here's how you can do it:

We'll create a script using vim editor

vim colorchange
#!/bin/bash
if [ $(tput colors) -ge 8 ]; then
 RED=$(tput setaf 1)
 RESET=$(tput sgr0)
 echo "${RED}This text is red${RESET}"
else
 echo "Terminal does not support colors."
fi

Executing Script

bash colorchange
Terminfo Database
Terminfo Database

This script checks if the terminal supports at least 8 colors before printing colored text. If it does, it sets the text color to red; otherwise, it prints a message indicating that the terminal does not support colors.

4. Using Shell Functions for Reusability

To simplify the process of printing colored text, you can define shell functions in your scripts. Here's an example of a shell function for printing colored text:

We'll create a script using vim editor

vim color
#!/bin/bash
print_color() {
 local color=$1
 local text=$2
 echo -e "$(tput setaf $color)$text$(tput sgr0)"
}
# Usage
print_color 2 "This text is green"

Executing Script

bash color
Using shell function
Using shell function

This function takes two arguments: the color code and the text to be printed. It then applies the specified color to the text using tput.

Conclusion

Printing colored text to the Linux terminal is a straightforward yet powerful way to enhance the visual presentation of your command-line applications or scripts. Whether you opt for ANSI escape sequences, tput, or dynamic color detection using the terminfo database, mastering these techniques will allow you to create more engaging and informative terminal experiences. Experiment with different colors and formatting options to discover the best approach for your specific needs.


Next Article
Article Tags :

Similar Reads