grep 플래그가 대소문자를 무시하지 않음

grep 플래그가 대소문자를 무시하지 않음

코드 소스에서 다음과 같은 패턴을 검색하는 간단한 스크립트가 있습니다.prgrep

#!/usr/bin/bash
grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"

(사실 별칭이나 함수라기보다는 스크립트입니다. vim어떤 쉘이든 내부에서 호출할 수 있기를 원하기 때문입니다.)

검색은 대소문자를 구분하지 않으며(내 생각에는 이것이 좋은 기본 검색이라고 생각함) 스크립트는 grep허용되는 모든 플래그를 받아들입니다.

스크립트 호출자가 스크립트의 플래그를 무시할 수 있도록 grep플래그를 원 하지만 이것이 제공되지 않습니다.--no-ignore-case-iGNU grep

그러한 기능을 제공하는 간단한 아이디어가 있습니까? 현재 Prgrep대소문자 구분 검색을 수행하는 별도의 스크립트가 있습니다 .

편집하다
최신 버전의 GNU grepdo는 --no-ignore-case나에게 꼭 필요한 옵션을 제공합니다. 제가 사용하고 GNU grep 3.1있는데 아직 이 옵션이 없습니다.

답변1

새 버전에는 다음을 포함하는 grep옵션이 있습니다.--no-ignore-case-i

--대소문자를 무시하지 마세요.
패턴과 입력 데이터의 대소문자 차이를 무시하지 마세요. 이것이 기본 설정입니다. 이 옵션은 -i를 사용하여 효과를 취소한 쉘 스크립트에 전달하는 데 유용합니다. 두 옵션이 서로 재정의되기 때문입니다.

이전 버전의 경우 grep다음을 스크립트에 옵션으로 추가하면 됩니다.

#!/usr/bin/bash
if [ "$1" = "--no-ignore-case" ]; then
    shift
    grep -rnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"
else
    grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"
fi

참고: --no-ignore-case이는 스크립트를 호출할 때 첫 번째 매개변수로 필요합니다.

관련 정보