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



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

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

要强制从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.

只需使用 Bash 函数,例如:

make()
{
  pathpat="(/[^/]*)+:[0-9]+"
  ccred=$(echo -e "33[0;31m")
  ccyellow=$(echo -e "33[0;33m")
  ccend=$(echo -e "33[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 发表于 十一月 4, 2006 · 1 评论·上次更新时间:2006 年 11 月 4 日

在巴什壳

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

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

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

任务:关闭颜色

键入以下命令

$ ls --color=none

或者只是使用取消别名命令删除别名:

$ unalias ls

任务:打开颜色

使用以下命令之一:

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

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

此命令适用于运行良好的 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

相关内容

  • 没有找到相关文章

最新更新