I really struggle understanding the behavior of echo (and others such commands) while processing ANSI escape codes to print colored messages.
I know I can use the -e option like this:
echo -e "\e[32m FOO \e[0m" My message will be successfully colored.
Also, I noticed that I could assign the output of echo -e to a variable, and then re-use this variable in a new echo command without the -e option, and this would work anyway.
foo=$(echo -e "\e[32m FOO \e[0m") echo $foo So, what are the actual "raw bytes" emitted by echo -e when encountering ANSI codes? What does my foo variable contain? How could I integrate them directly in my echo "??? FOO ???" without needing the -e option?