我有一个简单的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 $@
但是最后的命令在某种程度上与直接从提示符中实际运行grep
不一样,因为结果中缺少颜色。直接执行grep
时,结果显示紫色的文件名和红色匹配,但现在所有输出都是正常的终端文本颜色。有人能告诉我如何从我的剧本中获取彩色版本吗?
答案 0 :(得分:11)
看起来grep在不处于交互模式时不会产生颜色。你可以强制它产生彩色输出:
grep --color=always $@
答案 1 :(得分:8)
Grep有3种颜色模式,Auto,Always和Off。
当代码连接到非交互式输出(如管道)时,会自动删除代码(如果您想了解原因,请尝试将grep --color=always
的输出重定向到文件中,然后查看文件。到处控制代码)