GNU/Linux >> Linux Esercitazione >  >> Linux

Grep –color è impostato su =auto o =sempre?

Qual è il comportamento del colore predefinito per grep --color se no [=QUANDO ] è specificato?

La pagina man di grep afferma:

--color [=QUANDO ], --color [=QUANDO ]

    Circonda le stringhe corrispondenti (non vuote), le righe corrispondenti, le righe di contesto,
    i nomi dei file, i numeri di riga, gli offset di byte e i separatori (per campi e
    gruppi di righe di contesto) con sequenze di escape per visualizzarli a colori
    sul terminale.
    … 
    QUANDO è never , always o auto .

Fa l'impostazione predefinita [=QUANDO ] per grep --color diventa:

grep --color=auto

o

grep --color=always

o dipende dall'implementazione e dalla piattaforma?

Nei miei test su Ubuntu 14.04 con GNU grep 2.16:

echo "foo bar" | grep --color foo

risulta in foo bar , mentre

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

risulta in foo bar , quindi sembra che grep --color=auto è in vigore qui. Tuttavia, non l'ho testato su Windows o Mac; Non so se questo comportamento sia universale.

Questo valore predefinito per [=QUANDO ] è leggermente diverso da ls --color dove la pagina man per ls afferma:

--color [=QUANDO ]

    colora l'output.
    QUANDO il valore predefinito è always oppure può essere never o auto .

Qui, il comportamento dei QUANDO scomparsi è esplicito.

Risposta accettata:

L'impostazione predefinita è auto .

grep --color equivale a scrivere --color=auto .

Questo sembra essere scarsamente documentato, oppure considerano il semplice --color deprecato, ma può essere visto sia dai test che dal suo codice sorgente:

  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;

Si noti che la mancanza di un optarg risulta uguale a auto o tty .


Linux
  1. Cosa fa "lc_all=c"?

  2. Dove viene impostato il termine Default della variabile di ambiente?

  3. Cosa fa Eco $? Fare??

  4. Taglia / Grep e Df -h?

  5. Perché l'aggiunta di due punti interrompe questo schema Grep?

Grep -v Comportamento imprevisto?

Che cos'è il comando Grep in Linux? Perché viene utilizzato e come funziona?

Grep opzione di colore predefinita

Perché debian e ubuntu hanno come impostazione predefinita il runlevel 2?

Il kernel Linux 3.x utilizza lo scheduler del processo CFS?

Cosa significa -/filepath ACTION nella configurazione di rsyslog