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=auto
que 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
less
funciona para mí, tal vez la versión anterior requiera que la-R
bandera maneje los colores, como se sugiere a continuación.fuente
less -R
para 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 -R
que satisfizo mis necesidades perfectamente. (¡Gracias de nuevo!)less
y, por lo tanto, perdieron la oportunidad de tener unacolorless
herramienta 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
.$LESS
establecido con-R
.Puedes poner esto en tu
.bashrc
archivo:o crea un alias como este:
y tendrá que usar la
-R
opción paraless
, como se indica a continuaciónfuente
grep
conGREP
o anular la--color
opción manualmente.En este caso, prefiero crear archivos sh pequeños y ponerlos
/usr/local/bin
.Usualmente uso
grep
de 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
.bashrc
sólo hay que poner:alias less="less -r"
.fuente
grep --color=always
yless -R
. Tenga en cuenta que grep solo sabe que se está canalizando en algún otro proceso y la--color=auto
opción utiliza únicamente esta información para decidir si generará colores o no.less
opción-r
es diferente de-R
. Probablemente-R
es más seguro.less
con el ejemplo que ya usa la opción `--color '.less
admite una$LESS
variable 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 ..!