Eu tenho um script ksh que deve funcionar no linux e no solaris. Estou tentando colorir a saída de comandos específicos. Funciona no linux (especificamente RHEL6), mas não no solaris (SunOS 5.10).
Comando no linux (a saída "test" está corretamente vermelha):
[amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
test
Comando no solaris (a saída "teste" não é colorida):
[amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,'
x1B[31mtestx1B[0m
Existe uma maneira de criar esse comando de modo que a saída seja vermelha, sem os códigos brutos na saída? Não consigo alterar o comando 'eco' porque é apenas um preenchimento do comando que estou executando.
cat |sed
muito thx!Seria mais fácil usar
tput
ou
Isso define o primeiro plano como vermelho, as execuções
somecommand
que exibem a saída em vermelho e depois limpam a sequência de cores. Isso funciona pelo menos combash
,zsh
eksh
.Veja
tmux(1)
eterminfo(5)
para mais informações sobre o que você pode fazertput
.fonte
Alguns terminais (como o bash no iterm para mim) permitem que você pressione as teclas "ctrl-v", seguidas de "ctrl + [" e colocará o caractere de escape literal na string de entrada. Se funcionar, você provavelmente verá os caracteres "^ [" impressos na tela, mas se você mover o cursor ao redor dele, ele será tratado como um caractere, porque realmente está nos bastidores.
Para entender o que está acontecendo (e testar se isso é possível), você pode digitar ctrl + v seguido de ctrl + i. Você deve ver que o caractere de tabulação foi inserido na sua string de prompt. Há um histórico do CS para explicar por que esse é o caso: mas acontece que o teclado muito antigo tinha ctrl + que eu havia ligado para enviar o caractere de tabulação; e a tecla Tab também envia o mesmo sinal elétrico.
Por esse motivo legado, o bash para muitos terminais ainda interpreta certos códigos ctrl para mapear para os mesmos caracteres.
Ctrl + I mapeia o caractere de tabulação e ctrl + [coincide com o caractere de escape ascii.
fonte