GREP_OPTIONS sind in neueren Versionen deprecated und verseuchen die Ausgabe von grep komplett.
Das ist zwar wirklich nen sinnvoller weg um sowas oder farbige Ausgabe zu bewerkstelligen, kann jedoch zu Problemen führen, wenn grep in scripten verwendet wird und die Optionen das Verhalten von grep verändern.
Dann krückt die Manpage oder leidet an digitaler Demenz.
GREP_OPTIONS This variable specifies default options to be placed in front of any explicit options. For example, if GREP_OPTIONS is '--binary-files=without-match --directories=skip', grep behaves as if the two options --binary-files=without-match and --directories=skip had been specified before any explicit options. Option specifications are separated by whitespace. A backslash escapes the next character, so it can be used to specify an option containing whitespace or a backslash.
Dieser Beitrag wurde 1 mal editiert. Zuletzt am 07. Jan 2016 um 14:25.
GREP_OPTIONS This variable specifies default options to be placed in front of any explicit options. As this causes problems when writing portable scripts, this feature will be removed in a future release of grep, and grep warns if it is used. Please use an alias or script instead.
ergänze, die option -l von grep ist in diesen fällen ebenfalls oft recht nützlich:
grep(1) -l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match. (-l is specified by POSIX.)
Der Unterschied ist, es wird nur der Name einer Datei mit einem Treffer ausgegeben, nicht der/die Treffer selbst. Ist recht praktisch um sich mal eben einen Überblick zu verschaffen.
GREP_OPTIONS sind in neueren Versionen deprecated und verseuchen die Ausgabe von grep komplett.
Das ist zwar wirklich nen sinnvoller weg um sowas oder farbige Ausgabe zu bewerkstelligen, kann jedoch zu Problemen führen, wenn grep in scripten verwendet wird und die Optionen das Verhalten von grep verändern.
Warum nicht einfach?
grep -r "muster" /etc
wenn schon dann:
grep -r "muster" /etc/**
Nee wirklich nicht.
Das funktioniert so!
grep -r localhost /etc
Das funktioniert natürlich auch,
aber die Wildcards sind überflüssig.
Das "-r" steht für recursive und grep macht das ohne shell Hilfe.
wahrscheinlich fehlt da auch nur ein Joker:
grep -s "muster" /etc/**/*
ist das äquivalent zu
grep -sR "muster" /etc/
Die Shell hat den Vorteil sich immer gleich zu verhalten (vergl. z.B. mit ls -[rR]).
Dann krückt die Manpage oder leidet an digitaler Demenz.
GREP_OPTIONS
Dieser Beitrag wurde 1 mal editiert. Zuletzt am 07. Jan 2016 um 14:25.This variable specifies default options to be placed in front of any explicit options. For example, if GREP_OPTIONS is '--binary-files=without-match --directories=skip', grep behaves as
if the two options --binary-files=without-match and --directories=skip had been specified
before any explicit options. Option specifications are separated by whitespace. A backslash
escapes the next character, so it can be used to specify an option containing whitespace or a backslash.
Hier sagt die manpage:
Man sollte besser mit "$@" die Parameter expandieren. Also:
Ansonsten würden Dateinamen mit Leerzeichen – auch in Anführungszeichen – nicht korrekt übergeben.
Hallo
ergänze, die option -l von grep ist in diesen fällen ebenfalls oft recht nützlich:
grep(1)
-l, --files-with-matches
Suppress normal output; instead print the name of each input
file from which output would normally have been printed. The
scanning will stop on the first match. (-l is specified by
POSIX.)
Der Unterschied ist, es wird nur der Name einer Datei mit einem Treffer ausgegeben,
nicht der/die Treffer selbst. Ist recht praktisch um sich mal eben einen Überblick zu verschaffen.
MfG