Suelo usar Grep para buscar un
texto exacto en archivos. Usando grep -R texto
dentro de un
directorio, puedo localizar todos sus archivos en los que se encuentra
dicho texto.
Cuando hay muchas coincidencias es más cómodo usar less
para moverse
por los resultados. El problema es que al ejecutar
grep -R texto | less
los colores ya no se ven.
Grep no muestra colores por defecto, sino que está configurado en la
mayoría de sistemas GNU/Linux con un alias en el archivo .bashrc
, o en
el equivalente en otros intérpretes de instrucciones, para detectar
cuándo mostrar colores y cuándo no: alias grep='grep --color=auto'
.
Cuando pasa el resultado de su ejecución a otro programa mediante una
tubería, Grep deja de mostrar colores, porque los códigos usados para
mostrar colores en las terminales añaden caracteres no existentes que
pueden producir resultados inesperados. Para mostrar colores también en
este caso debemos añadir --color=always
. También debemos pasarle la
opción -r
a less
para que este muestre los caracteres de color.
Queda así la instrucción: grep --color=always -R texto | less -r
.
Puesto que es tedioso escribir tanto, es buena idea añadir esta
función al archivo .bashrc
(recuerda que es necesario
recargar la configuración de Bash
para poder usar la función):
lgrep ()
{
grep --color=always -R "$1" | less -r
}
De esta forma solo es necesario escribir lgrep texto
para que se
muestren los resultados con color en less
.
Comentarios