GNU/Linux >> Tutoriales Linux >  >> Linux

¿Grep –color Predeterminado a =auto o =siempre?

¿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 .


Linux
  1. Que hace ?

  2. ¿Cómo unir líneas que no comienzan con "#" o ";"?

  3. Grep -v ¿Comportamiento inesperado?

  4. ¿Dónde se establece el término valor predeterminado de la variable de entorno?

  5. ¿Qué hace Echo $? ¿¿Hacer??

¿Qué hace “lc_all=c”?

¿Qué es el comando Grep en Linux? ¿Por qué se usa y cómo funciona?

Agregar una línea a un archivo solo si aún no existe

¿Por qué debian y ubuntu tienen por defecto el nivel de ejecución 2?

¿Usa el kernel 3.x de Linux el programador de procesos CFS?

¿Qué significa -/filepath ACTION en la configuración de rsyslog?