Using Bash to Display Every Terminal Color and Text Style

This one’s a quickie.
In the terminal, colors and text styles can make output more readable and visually appealing. Whether you’re creating a script with status messages or customizing your prompt, knowing how to use ANSI escape codes for colors and styles is invaluable.
In this post, let’s explore a simple Bash script that prints all possible combinations of colors and styles of text in the terminal, along with the respective codes that generate them.
The script
#!/bin/bash
for style in '' '1;' '2;' '3;' '4;' '9;'; do
for fg in {30..37}; do
for bg in {40..48}; do
if [ -z "$style" ]; then
echo -en "\x1b[${bg}m \x1b[0m"
fi
echo -en "\x1b[${style}${fg};${bg}m ${style}${fg};${bg} \x1b[0m"
done
echo # Newline after each row
done
echo # Newline after each style for separation
done
How it works
The outermost for-loop will iterate over different text styles.
’’: This means no styling is added1: This will make the text bold2: This will make the text a little dim3: This will italicize the text4: This will add an underline to the text9: This will add a strikethrough to the text
The next for-loop iterates over all the foreground colors (30-37) and the next one over all the background colors (40-48).
The \x1b[0m resets the formatting of the text, so that each formatting is applied without affecting the next one.
Running the script
I named the file as ansi-test. Hence, I can run the following commands to execute the script:
chmod +x ansi-test
./ansi-test
This prints a grid displaying all possible combinations of colors and styles! 🎨

Where to find the code
I have uploaded this script to GitHub here so you can easily access and modify it. I have added the path to this directory to the $PATH variable on my machine, so I don’t have to navigate to this directory to execute it. I can just type ansi-test anywhere and can execute it 😉. I will share that piece of configuration in a future article. Until then, happy scripting!⚡

