Страница руководства для grep
описывает -I
флаг следующим образом:
-I Ignore binary files. This option is equivalent to
--binary-file=without-match option.
Это также говорит об двоичных файлах:
--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.
Я не могу придумать сценарий, в котором мне нужно было бы искать совпадения в двоичных файлах. Если такой сценарий существует, он должен быть скорее исключением, чем нормой. Почему не grep
игнорировать двоичные файлы по умолчанию, вместо того, чтобы устанавливать для этого флаг?
GREP_OPTIONS
в соответствии с вашими предпочтениями, тогда вам не нужно использовать столько переключателей командной строки..(ba|z|foo)shrc':
псевдониме grep = "grep -I" `.Ответы:
Не все, что grep считает двоичным файлом, на самом деле является двоичным файлом. Например, в журналах Puppet есть цветовая кодировка ANSI, что заставляет grep думать, что они двоичные. Я все еще хотел бы искать их, если я просматривал / var / log все же.
источник
grep
Возможность поиска бинарных файлов также полезна, когда я компилирую программу, а компоновщик (ld
) жалуется на отсутствие какой-либо функции. Я могу использовать команду какнайти библиотеку, в которой он содержится. (Библиотеки - это двоичные файлы.)
источник
grep -l function_name /lib/lib*
илиnm -Do /lib/lib* | grep function_name
илиldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name
хотя.grep some_function /lib/*
короче и обычно дает правильный ответ - название библиотеки, которую я ищу. Но да, иногда требуется и более сложный подход, как у вас.