There is a simlar question in Preserve ls colouring after grep’ing but it annoys me that if you pipe colored grep output into another grep that the coloring is not preserved.
As an example grep --color WORD * | grep -v AVOID
does not keep the color of the first output. But for me ls | grep FILE
do keep the color, why the difference ?
grep
sometimes disables the color output, for example when writing to a pipe. You can override this behavior with grep --color=always
The correct command line would be
grep --color=always WORD * | grep -v AVOID
This is pretty verbose, alternatively you can just add the line
alias cgrep="grep --color=always"
to your .bashrc
for example and use cgrep
as the colored grep. When redefining grep
you might run into trouble with scripts which rely on specific output of grep
and don't like ascii escape code.