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.
생각할 수 없습니다. 이진 파일의 일치에 관심이있는 시나리오입니다. 그러한 시나리오가 존재한다면, 확실히 그것은 표준이 아니라 예외 일 것입니다. 이 플래그를 설정하지 않고 기본적으로 바이너리 파일을 무시하지 않는 이유는 무엇입니까?
코멘트
Answer
grep이 이진 파일이라고 생각하는 모든 것이 실제로는 이진 파일입니다. 예 : puppet의 로그에는 ansi 색상 코딩이있어 grep이 “바이너리”라고 생각하게합니다. 그래도 / var / log를 검색하는 경우에도 검색하고 싶습니다.
코멘트
- PDF 파일의 경우도 마찬가지입니다. 글쎄.
- + 역사적으로 grep은 그렇게 할 수 없었기 때문에 호환성을 위해서만 기본값이 모든 것을 포함해야합니다.
- @OlivierDulac 의미가 있습니다. 그렇지 않으면 바이너리 파일을 무시하는 것이 좋습니다. 기본값입니다.
답변
grep
의 검색 기능 바이너리 파일은 프로그램을 컴파일 할 때 링커 (ld
)가 일부 기능을 찾을 수 없다고 불평 할 때도 유용합니다. 나는 그것을 포함하는 라이브러리를 찾기 위해
grep function_name /lib/lib*
와 같은 명령을 사용할 수 있습니다. (라이브러리는 바이너리 파일입니다.)
코멘트
- 이 경우 '
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/*
는 더 짧고 일반적으로 정답을 제공합니다-내가 찾고있는 도서관 이름. 그러나 예, 때로는 귀하와 같은 더 정교한 접근 방식도 필요합니다.
GREP_OPTIONS
를 원하는 설정으로 설정할 수 있습니다. 그러면 ' 그만큼 많은 명령 줄 스위치를 사용할 필요가 없습니다. ..(ba|z|foo)shrc':
별칭 grep =grep -I "`.