Die Manpage für grep
beschreibt das -I
Flag wie folgt:
-I Ignore binary files. This option is equivalent to
--binary-file=without-match option.
Dies gilt auch für Binärdateien:
--binary-files=value Controls searching and printing of binary files.
Options are binary, the default: search binary files but do not print
them; without-match: do not search binary files; and text: treat all
files as text.
Ich kann mir kein Szenario vorstellen, in dem mir Übereinstimmungen in Binärdateien wichtig sind. Wenn es ein solches Szenario gibt, muss es sicherlich eher die Ausnahme als die Norm sein. Warum werden grep
Binärdateien nicht standardmäßig ignoriert, anstatt dass das Setzen dieses Flags erforderlich ist?
GREP_OPTIONS
auf Ihre bevorzugten Einstellungen einstellen , dann müssen Sie nicht so viele Befehlszeilenoptionen verwenden..(ba|z|foo)shrc':
Alias grep = "grep -I" ` einen Alias definieren .Antworten:
Nicht alles, was grep für eine Binärdatei hält, ist tatsächlich eine Binärdatei. Beispiel: Puppenlogs enthalten eine Ansi-Farbcodierung, die grep für binär hält. Ich würde sie trotzdem durchsuchen wollen, wenn ich durch / var / log greife.
quelle
grep
Die Möglichkeit, nach Binärdateien zu suchen, ist auch nützlich, wenn ich ein Programm kompiliere und der Linker (ld
) sich darüber beschwert, dass eine Funktion nicht gefunden wird. Ich kann einen Befehl wie verwendenum die Bibliothek zu finden, die sie enthält. (Bibliotheken sind Binärdateien.)
quelle
grep -l function_name /lib/lib*
odernm -Do /lib/lib* | grep function_name
oderldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name
.grep some_function /lib/*
ist kürzer und gibt normalerweise korrekte Antwort - Name der Bibliothek, die ich suche. Aber ja, manchmal ist auch ein ausgefeilterer Ansatz erforderlich.