saída colorida de cachimbo

1

esta é a cor do script

#!/bin/bash 

ESC_SEQ="\x1b["
COL_RESET=$ESC_SEQ"39;49;00m"
  case $1 in
    red )    COL_START=$ESC_SEQ"31;01m"
  ;;
    green)   COL_START=$ESC_SEQ"32;01m"
  ;;
    yellow ) COL_START=$ESC_SEQ"33;01m"
  ;;
    blue )   COL_START=$ESC_SEQ"34;01m"
  ;;
    mage )   COL_START=$ESC_SEQ"35;01m"
  ;;
    cyan )   COL_START=$ESC_SEQ"36;01m"
  ;;
  esac

  echo -ne $COL_START
  while read text;
  do
  echo  $text
  done
  echo -ne $COL_RESET

quando eu faço

curl localhost:8080/

responde com a saída usual de ondas HOOOOORAY!

quando eu faço

curl localhost:8080/ | color red

não colore a saída como espero que seja ...... 'CRY'

Eu não acho que estou ligando corretamente para a situação.

    
por Prospero 21.07.2013 / 09:45

1 resposta

1

Funciona para mim exatamente como você descreveu nas perguntas. Você pode querer verificar se as suas fugas estão corretas. Eles podem não ser as fugas corretas para o seu $ TERM, que podem ser facilmente corrigidos usando tput para consultar as fugas corretas para você assim:

COL_RESET=$(tput sgr0)
...
red )    COL_START=$(tput setaf 1)
green )    COL_START=$(tput setaf 2)
blue )    COL_START=$(tput setaf 4)
...

Outro exemplo de uso desses pode ser encontrado aqui .

Você também pode querer mudar a maneira como você chama echo, caso esteja sofrendo interferência. A página man do echo sugere o seguinte:

Due to shell aliases and built-in 'echo' command, using an unadorned 'echo' 
interactively or in a script may get you different functionality than that
described here.  Invoke it via 'env' (i.e., 'env echo ...') to avoid
interference from the shell.
    
por 24.07.2013 / 07:12

Tags