管道卷曲彩色输出

管道卷曲彩色输出

这是脚本颜色

#!/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

当我做

curl localhost:8080/

它以通常的卷曲输出响应 HOOOOORAY!

当我做

curl localhost:8080/ | color red

它不会按照我期望的方式对输出进行着色......“CRY”

我认为我没有正确地呼吁阅读这种情况。

答案1

它对我来说完全按照你在问题中提出的那样工作。您可能需要检查您的转义是否正确。它们可能不是您的 $TERM 的正确转义,可以通过使用 tput 查询正确的转义来轻松修复,如下所示:

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

使用这些的另一个例子可以在这里找到

您可能还想更改调用 echo 的方式,以防受到干扰。 echo 的手册页建议如下:

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.

相关内容