GREP_OPTIONS= --color= 항상 무시됩니까?

GREP_OPTIONS= --color= 항상 무시됩니까?

설정을 만지작거리고 있지만 GREP_OPTIONS제대로 작동하지 않습니다. 이유가 궁금합니다.

간단한 테스트 명령 출력:

richard@ubuntu:~$ echo $GREP_OPTIONS

richard@ubuntu:~$ 

richard@ubuntu:~$ ls | grep o 
Desktop
downloads
Dropbox
ebooks
workspace

richard@ubuntu:~$ ls | grep o --color=always | less -R 

richard@ubuntu:~$ export GREP_OPTIONS="--color=always" 
richard@ubuntu:~$ ls | grep o  | less -R 
  1. 첫 번째 grep은 터미널에 색상으로 출력됩니다(각 "o"는 빨간색임).
  2. 두 번째 grep은 더 적은 색상으로 출력됩니다(1과 동일).
  3. 그러나 세 번째 grep은 출력이 적지만 흑백이지만 컬러여야 합니다.

그래서 grep이 그것을 무시하고 있는 것 같습니다 GREP_OPTIONS. 이것은 버그인가요, 아니면 제가 뭔가 잘못하고 있는 건가요?

(우분투 12.04.2, GNU grep 2.10)

답변1

grep o컬러 출력이 생성되는 경우 이는 grep또는에 대한 별칭이거나(또는 더 많은 옵션이 있을 수 있음) 또는를 포함하는 값으로 설정됩니다. 비어 있으므로 별칭이어야 합니다.grep --color=autogrep --color=alwaysGREP_OPTIONS--color=auto--color=always$GREP_OPTIONS

색상이 표시되지 않으므로 별칭은 to (합리적인 선택) grep o | less -R여야 합니다 . grep --color=auto별칭을 사용하면 grep명령은 항상 --color명령줄에서 옵션을 받으며 해당 옵션은 환경 변수보다 우선합니다.

환경 변수를 사용하려면 ~/.bashrc또는 세션 실행 에서 별칭 정의를 제거하세요 unalias grep. alias grep='grep --color=auto'다음으로 바꿀 수 있습니다 export GREP_OPTIONS='--color=auto'. 다음을 제외하면 본질적으로 동일한 의미를 갖습니다.

  • 다른 값으로 설정하면 GREP_OPTIONS후자만 무시됩니다.
  • grep이 별칭은 대화형 셸에서 실행할 때만 적용되지만 설정은 스크립트 및 기타 애플리케이션에서 실행할 때도 GREP_OPTIONS적용됩니다 .grep

--color=always다른 옵션을 넣지 마십시오 GREP_OPTIONS. 많은 구문 분석이 중단될 수 있는 유일한 안전한 옵션 입니다 grep. 그 밖의 모든 것에는 별칭을 사용하십시오. 이러한 이유로 GNU grep의 향후 버전에서는 더 이상 이 옵션을 지원하지 않습니다.--color=autoGREP_OPTIONS

별칭 정의 ~/.bashrc(셸 설정)가 들어가고 환경 변수 정의 ~/.profile(세션 설정)가 들어갑니다. 바라보다모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?

별칭 없이 명령을 한 번만 실행하려면 \grep대신 실행하십시오 grep. 이름의 일부를 인용하면 별칭 조회가 무시됩니다.

관련 정보