A página de manual para grep
descreve o -I
sinalizador da seguinte maneira:
-I Ignore binary files. This option is equivalent to
--binary-file=without-match option.
Também diz isso sobre arquivos binários:
--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.
Não consigo pensar em um cenário em que me importaria com correspondências em arquivos binários. Se esse cenário existe, certamente deve ser a exceção e não a norma. Por que não grep
ignora arquivos binários por padrão, em vez de exigir a configuração desse sinalizador para fazer isso?
GREP_OPTIONS
com as configurações preferidas e não precisar usar tantas opções de linha de comando..(ba|z|foo)shrc':
alias grep = "grep -I" `.Respostas:
Nem tudo o que o grep pensa que é um arquivo binário é na verdade um arquivo binário. por exemplo, os registros de marionetes têm um código de cores ansi, o que faz o grep pensar que é binário. Eu ainda gostaria de procurá-los se eu estiver procurando através de / var / log.
fonte
grep
A capacidade de pesquisar arquivos binários também é útil quando estou compilando um programa e o linker (ld
) reclama que alguma função não foi encontrada. Eu posso usar um comando comopara encontrar a biblioteca que a contém. (Bibliotecas são arquivos binários.)
fonte
grep -l function_name /lib/lib*
ounm -Do /lib/lib* | grep function_name
ouldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_name
.grep some_function /lib/*
é mais curto e geralmente fornece a resposta correta - nome da biblioteca que estou procurando. Mas sim, às vezes é necessária uma abordagem mais sofisticada como a sua.