16

可能重复:
从 bash 脚本运行时 grep 失去颜色

grep我有一个简单的 bash 脚本来在我的结果之上打印一个标题:

#!/bin/bash

for var in "$@"
do
    if [[ $var != -* ]];
    then
        break 
    fi
done

echo
echo -en "\e[1;31m     ====== GREP $var ======\e[0m\n"
echo

grep $@

grep但是最终的命令在某种程度上与直接从提示符实际运行不同,因为结果中缺少颜色。直接执行时grep,结果以紫色显示文件名,以红色显示匹配项,但现在所有输出都是正常的终端文本颜色。有人可以告诉我如何从我的脚本中获取彩色版本吗?

4

2 回答 2

22

看起来 grep 在不处于交互模式时不会产生颜色。您可以强制它产生彩色输出:

grep --color=always $@
于 2012-09-07T16:12:17.330 回答
11

Grep 有 3 种颜色模式,Auto、Always 和 Off。

Auto strips out the codes when it's connected to a non interactive output, such as a pipe (if you want to see why, try redirecting the output of grep --color=always into a file and then look at the file.. control codes everywhere)

于 2012-09-07T22:24:43.980 回答