如何从脚本中包装的shell命令启用彩色输出?

时间:2014-02-15 06:03:21

标签: linux bash shell colors

基本上,我说像grep这样的命令输出带有-r标志的颜色编码结果。如果我要在shell脚本中包装此命令,则在运行脚本时,输出将不具有相同的颜色编码效果。

是否有其他方法可以使shell脚本以相同的颜色编码吐出结果(在终端上),而无需使用tput或手动颜色编码?

2 个答案:

答案 0 :(得分:2)

强制从grep输出颜色:

grep --color=always

来自man grep

   --color[=WHEN], --colour[=WHEN]
          Surround   the   matched   (non-empty)   strings,
          matching lines, context lines, file  names,  line
          numbers, byte offsets, and separators (for fields
          and  groups  of  context   lines)   with   escape
          sequences   to  display  them  in  color  on  the
          terminal.   The  colors  are   defined   by   the
          environment variable GREP_COLORS.  The deprecated
          environment   variable   GREP_COLOR   is    still
          supported,   but   its   setting  does  not  have
          priority.  WHEN is never, always, or auto.

答案 1 :(得分:1)

只需使用Bash功能,比如说这个:

make()
{
  pathpat="(/[^/]*)+:[0-9]+"
  ccred=$(echo -e "\033[0;31m")
  ccyellow=$(echo -e "\033[0;33m")
  ccend=$(echo -e "\033[0m")
  /usr/bin/make "$@" 2>&1 | sed -E -e "/[Ee]rror[: ]/ s%$pathpat%$ccred&$ccend%g" -e "/[Ww]arning[: ]/ s%$pathpat%$ccyellow&$ccend%g"
  return ${PIPESTATUS[0]}
}

如何打开或关闭bash中的颜色

由NIX CRAFT于2006年11月4日·1评论·2006年11月4日最新更新

在BASH SHELL

Q值。如何在bash shell中打开或关闭文件名颜色?

一个。大多数现代Linux发行版都带有定义文件颜色的别名。但是ls命令负责在屏幕上显示文件,目录和其他对象的颜色。

默认情况下,颜色不用于区分文件类型。您需要将--color选项传递给ls命令。

任务:关闭颜色

输入以下命令

$ ls --color=none

或者只使用unalias命令删除别名:

$ unalias ls

任务:打开颜色

使用以下任何命令:

$ ls --color=auto
$ ls --color=tty

您可以在~/.bash_profile or ~/.bashrc文件中添加或删除ls别名。

这个适用于bash的命令运行良好

handy tput commands

tput bold - Bold effect
tput rev - Display inverse colors
tput sgr0 - Reset everything
tput setaf {CODE}- Set foreground color, see color {CODE} below
tput setab {CODE}- Set background color, see color {CODE} below
Colors {code} code for tput command

Color {code}    Color
0    Black
1    Red
2    Green
3    Yellow
4    Blue
5    Magenta
6    Cyan
7    White