O grep --color padrão é = auto ou = sempre?

5

Qual é o comportamento de cor padrão para grep --color se nenhum [<> = WHEN ] estiver especificado?

A página do manual do grep afirma:

--color[=WHEN], --colour[=WHEN]

    Surround the matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences to display them in color on the terminal.  ...  WHEN is never, always, or auto.

O padrão [<>> WHEN ] para grep --color se torna:

grep --color=auto

ou

grep --color=always

ou depende da implementação e plataforma?

Nos meus testes no Ubuntu 14.04 com o GNU grep 2.16:

echo "foo bar" | \grep --color foo

resulta em foo bar , enquanto

echo "foo bar" | \grep --color foo | \grep --color bar

resulta em foo bar , portanto, parece que grep --color=auto está em vigor aqui. Eu não testei isso no Windows ou Mac, no entanto; Não sei se esse comportamento é universal.

Esse padrão para [<>> WHEN ] é um pouco diferente de ls --color , em que a página man de ls declara:

--color[=WHEN]

    colorize the output.  WHEN defaults to always or can be never or auto.

Aqui, o comportamento da falta WHEN é explícito.

    
por OnlineCop 06.11.2018 / 17:43

1 resposta

16

O valor padrão é auto .

grep --color é o mesmo que escrever --color=auto .

Isto parece estar documentado de forma deficiente, ou eles consideram o simples --color depreciado, mas isso pode ser visto tanto em testes como em seu código-fonte :

  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;

Observe que a falta de optarg resulta no mesmo que igual a auto ou tty .

    
por 06.11.2018 / 17:54

Tags