Uso mucho la opción --colour de grep, pero a menudo también uso menos. ¿Cómo puedo canalizar los resultados de grep a menos y aún preservar el color? (¿O es eso posible?)
grep "search-string" -R * --colour | less
EDITAR :
Estoy buscando una solución directa o algo equivalente a esto.

*hacer? De la página man de grep: ¡*: The preceding item will be matched zero or more times.Pero todavía no entiendo ..! @JeremyPowellRespuestas:
Cuando simplemente ejecuta
grep --color, implicagrep --color=autoque detecta si la salida es un terminal y, si es así, habilita los colores. Sin embargo, cuando detecta una tubería, deshabilita la coloración. El siguiente comando:Siempre habilitará el color y anulará la detección automática, y obtendrá el resaltado de color
less.EDITAR: Aunque usar solo
lessfunciona para mí, tal vez la versión anterior requiera que la-Rbandera maneje los colores, como se sugiere a continuación.fuente
less -Rpara que la codificación de color se interprete de manera menos correctaless, puede depender de la versión.grep pattern file | grep -v badpattern | grep --colour=always pattern | less -Rque satisfizo mis necesidades perfectamente. (¡Gracias de nuevo!)lessy, por lo tanto, perdieron la oportunidad de tener unacolorlessherramienta especial . ¡Solo por el nombre debería haberse hecho! Probablemente debería escribir un parche que invoca -R automáticamente cuando el binario se ejecuta comocolorless.$LESSestablecido con-R.Puedes poner esto en tu
.bashrcarchivo:o crea un alias como este:
y tendrá que usar la
-Ropción paraless, como se indica a continuaciónfuente
grepconGREPo anular la--coloropción manualmente.En este caso, prefiero crear archivos sh pequeños y ponerlos
/usr/local/bin.Usualmente uso
grepde forma recursiva en elpwd, así que ese es mi script personal:Y luego lo he copiado como
/usr/local/bin/g(sí, lo uso mucho)fuente
g() { grep --color=always -r "$@" . | less -R }funciona de manera idéntica y probablemente dará (minuciosamente) un mejor rendimiento.No alias "grep", mejor alias "less" que nunca es usado por los shells. En su
.bashrcsólo hay que poner:alias less="less -r".fuente
grep --color=alwaysyless -R. Tenga en cuenta que grep solo sabe que se está canalizando en algún otro proceso y la--color=autoopción utiliza únicamente esta información para decidir si generará colores o no.lessopción-res diferente de-R. Probablemente-Res más seguro.lesscon el ejemplo que ya usa la opción `--color '.lessadmite una$LESSvariable de entorno. Entonces, en lugar de un alias,export LESS='-R'podría ser preferible.Necesito correr
con la bandera -r después de menos , para que esto se ejecute.
fuente
*hacer? De la página man de grep: ¡*: The preceding item will be matched zero or more times.Pero todavía no entiendo ..!