Ich spielte mit dem Setting herum GREP_OPTIONS
und konnte es nicht zum Laufen bringen. Ich bin nur neugierig, warum.
Einfache Ausgabe von Testbefehlen:
richard@ubuntu:~$ echo $GREP_OPTIONS
richard@ubuntu:~$
richard@ubuntu:~$ ls | grep o
Desktop
downloads
Dropbox
ebooks
workspace
richard@ubuntu:~$ ls | grep o --color=always | less -R
richard@ubuntu:~$ export GREP_OPTIONS="--color=always"
richard@ubuntu:~$ ls | grep o | less -R
- Der erste grep wird farbig an das Terminal ausgegeben (jedes 'o' ist rot)
- Der 2. grep gibt über weniger Farbe aus (wie 1)
- Aber der 3. grep gibt weniger aus, aber in Schwarzweiß - aber dies sollte in Farbe sein.
Es scheint also, dass grep ignoriert GREP_OPTIONS
. Ist das ein Fehler oder mache ich etwas falsch?
(Ubuntu 12.04.2, GNU grep 2.10)
grep v3.1
beschwert sich lautstark überGREP_OPTIONS
jeden Aufruf:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'
zum Hervorheben in gelb.Antworten:
Wenn
grep o
eine Farbausgabe erzeugt wird, handelt es sich entwedergrep
um einen Alias fürgrep --color=auto
odergrep --color=always
(oder möglicherweise um mehrere Optionen) oderGREP_OPTIONS
um einen Wert, der--color=auto
oder enthält--color=always
. Da$GREP_OPTIONS
es leer ist, muss es der Alias sein.Da
grep o | less -R
keine Farben angezeigt werden, muss der Alias zugrep --color=auto
(eine sinnvolle Wahl) sein. Mit dem Aliasgrep
erhält der Befehl immer die--color
Option in der Befehlszeile, und dies hat Vorrang vor der Umgebungsvariablen.Wenn Sie die Umgebungsvariable verwenden möchten, entfernen Sie die Aliasdefinition aus Ihrem
~/.bashrc
oder für einen Sitzungslaufunalias grep
. Sie können ersetzenalias grep='grep --color=auto'
durchexport GREP_OPTIONS='--color=auto'
: Sie haben im Wesentlichen die gleiche Bedeutung, außer dass:GREP_OPTIONS
auf einen anderen Wert überschreibt nur den letzteren.grep
über eine interaktive Shell ausgeführt werden. Die EinstellungGREP_OPTIONS
gilt auch, wenngrep
sie über Skripts und andere Anwendungen ausgeführt wird.Niemals
--color=always
oder die meisten anderen Optionen eingebenGREP_OPTIONS
: Es würde viele Programme beschädigen, die die Ausgabe von analysierengrep
.--color=auto
ist über die einzig sichere Option zu setzenGREP_OPTIONS
. Verwenden Sie für alles andere den Alias. Zukünftige Versionen von GNU grep werden aus diesem Grund die Unterstützung für die Option einstellen.Beachten Sie, dass die Aliasdefinition in
~/.bashrc
(es ist eine Shell-Einstellung), während die Umgebungsvariablendefinition in~/.profile
(es ist eine Sitzungseinstellung) eingeht. Siehe Gibt es eine „Bashrc“ entsprechende Datei von allen Schalen lesen?Wenn Sie den Befehl ohne Alias nur einmal ausführen möchten, führen Sie ihn
\grep
stattdessen ausgrep
( wenn Sie einen beliebigen Teil des Namens angeben, wird die Alias-Suche umgangen).quelle
GREP_OPTIONS
zugunsten deralias
Variante veraltet ist .