Problemas ao tentar distribuir cores no bash

1

Estou um pouco perdido porque preciso de todas as barras invertidas para que isso seja impresso "Hello World" com as cores corretas.

xxx@yyy:/tmp$ echo $Red
3[0;34m
xxx@yyy:/tmp$ echo $Red
3[0;31m    xxx@yyy:/tmp$ echo -e "Hello ${Red} World" | sed "s/^/\\\${Blue}/g" | xargs echo -e
Hello  World

Qual é o motivo para isso? Existe alguma outra maneira mais fácil de sedar as cores no eco original? Eu precisarei fazer algo semelhante, onde eu pego alguns arquivos de texto e tentarei inserir cores antes de visualizá-lo no console.

Obrigado

    
por devoured elysium 24.01.2017 / 21:59

1 resposta

1

Você não precisa combinar os códigos de cores e o texto a ser enviado para o mesmo comando echo se tudo o que você está fazendo é colorir a totalidade do texto de uma só vez:

red="$(echo -e "3[0;31m")"
reset="$(echo -e "3[0m")"
echo "$red"
echo "This text is red."
echo "$reset"

Se você estiver tentando alterar os códigos de cores incorporados; você também não precisa extrair toda a sequência de escape. Para alterar o texto vermelho para amarelo, você pode:

echo "$color_festooned_text" | sed 's/;31/;33/g'
    
por 24.01.2017 / 22:08