¿Cuál es el comportamiento de color predeterminado para grep --color? si no [=CUANDO ] está especificado?
La página de manual de grep dice:
--colour [=CUANDO ], --colour [=CUANDO ]
- Rodee las cadenas coincidentes (no vacías), las líneas coincidentes, las líneas de contexto,
nombres de archivos, números de línea, compensaciones de bytes y separadores (para campos y
grupos de líneas de contexto) con secuencias de escape para mostrarlos en color
en el terminal.
…
CUÁNDO es
never , always o auto .
¿El valor predeterminado [=CUÁNDO ] para grep --color convertirse en:
grep --color=auto
o
grep --color=always
¿O depende de la implementación y la plataforma?
En mis pruebas en Ubuntu 14.04 con GNU grep 2.16:
echo "foo bar" | grep --color foo
da como resultado foo bar , mientras
echo "foo bar" | grep --color foo | grep --color bar
da como resultado foo bar , por lo que parece que grep --color=auto está vigente aquí. Sin embargo, no he probado esto en Windows o Mac; No sé si este comportamiento es universal.
Este valor predeterminado para [=CUANDO ] es un poco diferente de ls --color donde está la página del manual para ls estados:
--colour [=CUANDO ]
- colorea la salida.
CUÁNDO el valor predeterminado es
always o puede ser never o auto .Aquí, el comportamiento del CUANDO faltante es explícito.
Respuesta aceptada:
Por defecto es auto .
grep --color es lo mismo que escribir --color=auto .
Esto parece estar documentado de manera deficiente, o consideran el simple --colour obsoleto, pero eso se puede ver tanto en las pruebas como en su código fuente:
case COLOR_OPTION:
if (optarg)
{
if (!strcasecmp (optarg, "always") || !strcasecmp (optarg, "yes")
|| !strcasecmp (optarg, "force"))
color_option = 1;
else if (!strcasecmp (optarg, "never") || !strcasecmp (optarg, "no")
|| !strcasecmp (optarg, "none"))
color_option = 0;
else if (!strcasecmp (optarg, "auto") || !strcasecmp (optarg, "tty")
|| !strcasecmp (optarg, "if-tty"))
color_option = 2;
else
show_help = 1;
}
else
color_option = 2;
break;
Tenga en cuenta que la falta de un optarg da como resultado lo mismo que es igual a auto o tty .