echo
é um shell embutido no Bash e no traço ( /bin/sh
). Se você executar echo
a partir da linha de comando que estiver usando o Bash incorporado, se você estiver executando seu script de shell com sh
, estará usando o Dash embutido.
A versão de traço de echo
não conhece a opção -e
, mas apenas produz qualquer coisa literalmente sem nenhum tratamento especial para \
de sequências.
Use o Bash para executar seu script de shell ou use /bin/echo
em vez de echo
:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Para evitar problemas com versões diferentes de echo
, convém usar printf
. Em contraste com echo
printf
sempre interpreta \
sequencias mas não adiciona automaticamente um avanço de linha no final, então você tem que acrescentar \n
no final se você quiser um.
Como algumas versões de printf
não entendem \e
, você deve usar 3
:
printf "3[1;31mThis is red text3[0m\n"