GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist Grep –color standardmäßig =auto oder =always?

Was ist das Standardfarbverhalten für grep --color wenn nein [=WENN ] angegeben ist?

Auf der man-Seite von grep heißt es:

--colour [=WANN ], --colour [=WANN ]

    Umgeben Sie die übereinstimmenden (nicht leeren) Zeichenfolgen, übereinstimmenden Zeilen, Kontextzeilen,
    Dateinamen, Zeilennummern, Byte-Offsets und Trennzeichen (für Felder und
    Gruppen von Kontextzeilen) mit Escape-Sequenzen um sie auf dem Terminal farbig
    anzuzeigen.
    … 
    WANN ist never , always , oder auto .

Hat die Vorgabe [=WHEN ] für grep --color werden:

grep --color=auto

oder

grep --color=always

oder hängt es von der Implementierung und Plattform ab?

In meinen Tests auf Ubuntu 14.04 mit GNU grep 2.16:

echo "foo bar" | grep --color foo

ergibt foo bar , während

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

ergibt foo bar , also scheint grep --color=auto ist hier in Kraft. Ich habe dies jedoch nicht unter Windows oder Mac getestet; Ich weiß nicht, ob dieses Verhalten universell ist.

Diese Vorgabe für [=WHEN ] unterscheidet sich ein wenig von ls --color wo die Manpage für ls Zustände:

--colour [=WANN ]

    Ausgabe einfärben.
    WANN ist standardmäßig always oder kann never sein oder auto .

Hier das Verhalten des fehlenden WHEN ist explizit.

Akzeptierte Antwort:

Es ist standardmäßig auto .

grep --color ist dasselbe wie das Schreiben von --color=auto .

Dies scheint mangelhaft dokumentiert zu sein, oder sie betrachten das einfache --colour veraltet, aber das sieht man sowohl beim Testen als auch am Quellcode:

  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;

Beachten Sie, dass das Fehlen eines optarg ergibt dasselbe wie auto oder tty .


Linux
  1. Was macht „lc_all=c“?

  2. Wie grep ich rekursiv?

  3. Eine Zeile nur an eine Datei anhängen, wenn sie noch nicht existiert

  4. Was bedeutet \b in einem Grep-Muster?

  5. Warum verwenden Debian und Ubuntu standardmäßig Runlevel 2?

Wie Grep-Zeilen, die nicht mit „#“ oder „;“ beginnen?

Wo wird die Term-Umgebungsvariable Default gesetzt?

Was bedeutet Echo $? Tun??

Cut / Grep und Df -h?

Was ist der Grep-Befehl unter Linux? Warum wird es verwendet und wie funktioniert es?

Was bedeutet -/filepath ACTION in der rsyslog-Konfiguration?