可能重复:
grep从bash脚本运行时失去颜色
我有一个简单的bash脚本在我的grep结果上打印标题:
#!/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 $@
Run Code Online (Sandbox Code Playgroud)
但是最后的命令在某种程度上与grep直接从提示符实际运行不一样,因为结果中缺少颜色.grep直接执行时,结果显示紫色的文件名和红色匹配,但现在所有输出都是正常的终端文本颜色.有人能告诉我如何从我的脚本中获取彩色版本吗?
per*_*eal 11
看起来grep在交互模式下不会产生颜色.你可以强制它产生彩色输出:
grep --color=always $@
Run Code Online (Sandbox Code Playgroud)
Grep有3种颜色模式,Auto,Always和Off.
当代码连接到非交互式输出(例如管道)时自动剥离代码(如果您想了解原因,请尝试将输出重定向grep --color=always到文件中,然后查看文件..控制代码到处都是)