GNU grep의 --color = auto 옵션은 무엇을 의미합니까?


14

AFAICT는 GNU 매뉴얼 페이지 grep도 아니고 info grep어떤 --color=auto의미 인지를 설명 하지 않습니다 .

나는이 옵션의 의미가 즉시 명백하지 않은 지구상에서 가장 소수의 사람들 중 하나 여야합니다.

나는 --color=auto" 어딘가에 " --color=never--color=always이라고 생각하지만 여전히 너무 많이 지정되어 있지 않습니다.

답변:


14

규칙은와 동일하며 ls, 문서화 작업을보다 잘 수행합니다 man ls. 인용 :

파일 유형을 구별하기 위해 색상을 사용하는 것은 기본적
으로 --color = never 와 함께 비활성화되어 있습니다. --color = auto를 사용하면 ls
는 표준 출력이 터미널에 연결된 경우에만 색상 코드를 방출합니다 . LS_COLORS 환경
변수는 설정을 변경할 수 있습니다. dircolors 명령을 사용하여 설정하십시오.

따라서 출력이 터미널로 가고 파이프를 소비하는 프로그램이 파이프를 소비하는 프로그램이 색상 형식을 제대로 처리하지 못할 때 파이프로 갈 때 명령이 색상 형식을 추가하게합니다.


3
그렇습니다, 내가 겪은 주요 시간은 덜 배관되었습니다. 사용 less -R하면 일치 강조 표시를 얻을 수 있지만 --color=always작동하도록 grep 하도록 지정해야합니다 .
Holloway

10

grepGNU 프로그램 이므로 다른 옵션으로 소스 코드를 살펴볼 수 있습니다.


내부적으로 GREP를 테스트 static int color_option중 하나에 대한 0, 1또는 2.

  • 0 채색 된 출력을 사용하지 마십시오
  • 1 항상 색상을 사용하십시오
  • 2 터미널로 인쇄 할 때 색상 만 사용

이제 --color=autoCLI에서 인수로 grep을 전달하면 내부적으로 변수가 color_option로 설정 됩니다 2.

경우 color_option같음 2 grep여부 후 상기 테스트 STDOUT터미널 또는 사용자에 연결된 비아 outpit 색상 화 비활성화 됨 shell environment variables. 전자가 사실이고 컬러 출력이 허용되면 grep어떤 컬러를 사용해야하는지 평가하고 결국 CLI에는 컬러로 출력합니다 .


출처 : (grep 2.21)

grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.