Hay una pregunta similar en Preserve ls coloring después de grep'ing, pero me molesta que si canaliza la salida de color grep a otro grep, el color no se conserva.
Como ejemplo grep --color WORD * | grep -v AVOIDno mantiene el color de la primera salida. Pero para mí ls | grep FILEmantener el color, ¿por qué la diferencia?

Respuestas:
grepa veces deshabilita la salida de color, por ejemplo, al escribir en una tubería. Puede anular este comportamiento congrep --color=alwaysLa línea de comando correcta sería
Esto es bastante detallado, alternativamente, solo puede agregar la línea
a su
.bashrcpor ejemplo y usarcgrepcomo grep de color. Al redefinirgrep, puede tener problemas con los scripts que dependen de resultados específicosgrepy no les gusta el código de escape ASCII.fuente
grep.alias grep='grep --color=autoasí que necesito simplemente alterar mi~/.bashrcdonde se definió en primer lugar.Un consejo:
Cuando se usa
grep --color=always, las cadenas reales que se pasan a la siguiente tubería se cambiarán. Esto puede conducir a la siguiente situación:Aunque la opción
-ve '12'debe excluir la línea media, no lo hará porque hay caracteres de color entre1y2.fuente
--color=auto, debería detectar el hecho de que lo está canalizando en otro lugar y suprimir los colores por completo, pero de alguna manera frustra el propósito. Si aún desea resultados coloreados, supongo que podría volver a usarlo en la última tubería que use--color.--color=alwaysfunciona, con, supongo, las advertencias mencionadas anteriormente.Simplemente repita el mismo comando grep al final de su tubería.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORDfuente
grep -v AVOID * | grep WORD