Strona podręcznika dla grep
opisuje -I
flagę w następujący sposób:
-I Ignore binary files. This option is equivalent to
--binary-file=without-match option.
Mówi również o plikach binarnych:
--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.
Nie mogę wymyślić scenariusza, w którym dbałbym o dopasowania w plikach binarnych. Jeśli taki scenariusz istnieje, to z pewnością musi być wyjątkiem, a nie normą. Dlaczego grep
domyślnie ignoruje pliki binarne, zamiast wymagać ustawiania tej flagi?
GREP_OPTIONS
na preferowane ustawienia, wtedy nie musisz używać tylu przełączników wiersza poleceń..(ba|z|foo)shrc':
aliasie grep = "grep -I" `.Odpowiedzi:
Nie wszystko, co grep uważa za plik binarny, to tak naprawdę plik binarny. np. logi marionetek mają kodowanie kolorów ansi, co sprawia, że grep myśli, że są binarne. Nadal chciałbym je przeszukiwać, jeśli przeglądam / var / log.
źródło
grep
Możliwość wyszukiwania plików binarnych jest również przydatna, gdy kompiluję program, a linker (ld
) narzeka na brak funkcji. Mogę użyć polecenia takiego jakznaleźć bibliotekę, która ją zawiera. (Biblioteki są plikami binarnymi).
źródło
grep -l function_name /lib/lib*
albonm -Do /lib/lib* | grep function_name
czyldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name
chociaż.grep some_function /lib/*
jest krótszy i zwykle daje poprawną odpowiedź - nazwa biblioteki szukam. Ale tak, czasem wymagane jest również bardziej wyrafinowane podejście, takie jak twoje.