GNU/Linux >> Znalost Linux >  >> Linux

Má Grep –color výchozí hodnotu =auto nebo =vždy?

Jaké je výchozí chování barev pro grep --color pokud ne [=WHEN ] je zadáno?

Manuálová stránka grep uvádí:

--colour [=KDY ], --colour [=KDY ]

    Shodné (neprázdné) řetězce, odpovídající řádky, kontextové řádky,
    názvy souborů, čísla řádků, bajtové posuny a oddělovače (pro pole a
    skupiny kontextových řádků) obklopte sekvencemi escape zobrazíte je barevně
    na terminálu.
    … 
    KDY je never , always nebo auto .

Má výchozí [=WHEN ] pro grep --color stát se:

grep --color=auto

nebo

grep --color=always

nebo to závisí na implementaci a platformě?

V mých testech na Ubuntu 14.04 s GNU grep 2.16:

echo "foo bar" | grep --color foo

výsledkem je foo bar , zatímco

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

výsledkem je foo bar , takže to vypadá, že grep --color=auto je zde v platnosti. Netestoval jsem to však na Windows nebo Mac; Nevím, jestli je toto chování univerzální.

Toto výchozí nastavení pro [=WHEN ] se trochu liší od ls --color kde je manuálová stránka pro ls uvádí:

--colour [=KDY ]

    obarví výstup.
    KDY výchozí je always nebo může být never nebo auto .

Zde je chování chybějících KDY je explicitní.

Přijatá odpověď:

Výchozí nastavení je auto .

grep --color je stejné jako psaní --color=auto .

Zdá se, že to není dostatečně zdokumentováno, nebo uvažují o jednoduchém --colour zastaralé, ale to lze vidět jak z testování, tak z jeho zdrojového kódu:

  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;

Všimněte si, že chybí optarg výsledkem je totéž, co je rovno auto nebo tty .


Linux
  1. Co dělá ?

  2. Nastavit výchozí uloženou práci s GRUB2...?

  3. Co znamená -/filepath ACTION v konfiguraci rsyslog

  1. Jak Grep linky, které nezačínají "#" nebo ";"?

  2. Grep -v Neočekávané chování?

  3. Kde se nastavuje výchozí proměnná prostředí?

  1. Co dělá Echo $? Dělat??

  2. Řez / Grep A Df -h?

  3. Proč přidání tlustého střeva naruší tento vzor Grep?