¿Qué efecto tiene autocomo opción para el --colorinterruptor en grep? ¿Cuándo grep decide colorear las cadenas coincidentes y cuándo no?
fuente
¿Qué efecto tiene autocomo opción para el --colorinterruptor en grep? ¿Cuándo grep decide colorear las cadenas coincidentes y cuándo no?
Con --color=auto, grep resaltará las cadenas coincidentes si (y solo si) la salida se escribe directamente en el terminal y dicho terminal es capaz de mostrar una salida en color.
Normalmente, --color=autoes lo que quieres. Si, por ejemplo, usa grep para hacer coincidir una URL y canalizarla a Wget, Wget verá en \e[1;31mhttp://...lugar de la URL real (y se ahogará).
Los siguientes comandos deberían dar como resultado una salida en color:
echo Super User | grep --color=auto Super
echo Super User | grep --color=always Super | cat
Este comando, sin embargo, no debe:
echo Super User | grep --color=auto Super | cat
Cualquier inconsistencia con este comportamiento debe considerarse un error.
Con --color=autola última versión de Grep para Windows (2.5.4), así como la 2.5.4 original en la que se basa, colorea la salida si y solo si la condición
isatty(STDOUT_FILENO) && getenv("TERM") && strcmp(getenv("TERM"), "dumb")
es verdadero, es decir, si y solo si la salida se está escribiendo en un terminal, la variable de entornoTERM está definida y el terminal no es tonto .
Esto no producirá el comportamiento deseado en Windows, ya TERMque normalmente no está definido. Una solución fácil a este problema es configurarlo TERM=windowsen el panel de control.
La última versión de grep (2.14) soluciona este problema coloreando el resultado si y solo si la condición
isatty(STDOUT_FILENO) && should_colorize()
es cierto, donde should_colorize()se define de manera diferente para POSIX y Win32:
Para el primero, la condición es equivalente a la de 2.5.4; para este último, la variable de entorno TERMno tiene que establecerse (simplemente no puede ser dumb).
sdgstd.h,istty(stdout)devuelve0si la salida se redirige a un archivo.grepylessde proyecto GNUWin (gnuwin32.sourceforge.net).cmd.exeSe mejora con laansiconutilidad.less --color=autofunciona como se espera: usa el color cuando no se aplica la redirección y no cuando la salida se redirige. Perogrep --color=autono imprime secuencias de escape en ambos casos.