How to Print Colored Text to the Linux Terminal
Last Updated :
23 Jul, 2025
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"
changing text to redIn this example:
- \e[31m sets the text color to red.
- \e[0m resets the text formatting to the default.
Common ANSI Color Codes:
ANSI Code | Color |
---|
31 | Red |
32 | Green |
33 | Yellow |
34 | Blue |
35 | Magenta |
36 | Cyan |
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 tputIn 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:
Code | Color |
---|
0 | Black |
1 | Red |
2 | Green |
3 | Yellow |
4 | Blue |
5 | Magenta |
6 | Cyan |
7 | Whit |
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 DatabaseThis 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 functionThis 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.
Explore
Linux/Unix Tutorial
10 min read
Getting Started with Linux
Installation with Linux
Linux Commands
Linux File System
Linux Kernel
Linux Networking Tools
Linux Process
Linux Firewall
Shell Scripting & Bash Scripting