Linux 格雷普是如何制作颜色的?

Linux 格雷普是如何制作颜色的?,linux,bash,redirect,colors,grep,Linux,Bash,Redirect,Colors,Grep,我知道在bash中我可以打印彩色字符串,如: echo -e "\033[33;1mhello\033[0m" shell中的输出将是金色的hello。但是当我将输出重定向到一个文件test.txt时,\033[33;也将在文本文件中。但是grep--color=auto命令不会将这些字符重定向到文本文件中。它如何做到这一点呢?它可能使用了标准文件描述符(即1)上的库函数。因此使用 在你的C代码中 在shell脚本中,使用以下命令: 或者简单地使用-t 它可能在标准文件描述符(即1)上使用库函

我知道在bash中我可以打印彩色字符串,如:

echo -e "\033[33;1mhello\033[0m"
shell中的输出将是金色的hello。但是当我将输出重定向到一个文件
test.txt
时,
\033[33;
也将在文本文件中。但是
grep--color=auto
命令不会将这些字符重定向到文本文件中。它如何做到这一点呢?

它可能使用了标准文件描述符(即1)上的库函数。因此使用

在你的C代码中

在shell脚本中,使用以下命令:

或者简单地使用
-t

它可能在标准文件描述符(即1)上使用库函数

在你的C代码中

在shell脚本中,使用以下命令:

或者简单地使用
-t

这个怎么样

#!/bin/bash

if [ -t 1 ]; then
    echo -e "\033[33;1mhello\033[0m"
else
    echo hello
fi
以下是解释:

test-t
,其缩写为
[-t]
,检查描述符
是否为终端。来源:
帮助测试

如何

#!/bin/bash

if [ -t 1 ]; then
    echo -e "\033[33;1mhello\033[0m"
else
    echo hello
fi
以下是解释:


test-t
,其缩写为
[-t]
,检查描述符
是否为终端。来源:
帮助测试

使用带有导出标志的GREP\u COLORS变量。测试结果如下:

export GREP_COLORS='ms=01;33'
grep --color=auto -e hello

使用带有导出标志的GREP_COLORS变量。对此进行了测试,结果表明:

export GREP_COLORS='ms=01;33'
grep --color=auto -e hello

听起来像是一个复制品听起来像是一个复制品有各种各样的脚本用于删除颜色代码和各种控制字符,例如,这个脚本。谢谢。我明白了。但是这个perl脚本至少对中文单词不起作用。sed版本可能更好:
--always
选项应该使用类似“always”的参数无论输出目的地是什么,都可以强制使用颜色。有各种各样的脚本可以删除颜色代码和各种控制字符,例如,其中的一个。谢谢。我明白了。但是perl脚本至少对中文单词不起作用。sed版本可能更好:
--always
选项应该使用类似“always”的参数无论输出目标是什么,强制使用颜色。
export GREP_COLORS='ms=01;33'
grep --color=auto -e hello