AFAICT는 GNU 매뉴얼 페이지 grep
도 아니고 info grep
어떤 --color=auto
의미 인지를 설명 하지 않습니다 .
나는이 옵션의 의미가 즉시 명백하지 않은 지구상에서 가장 소수의 사람들 중 하나 여야합니다.
나는 --color=auto
” 어딘가에 ” --color=never
와 --color=always
이라고 생각하지만 여전히 너무 많이 지정되어 있지 않습니다.
답변
규칙은와 동일하며 ls
, 문서화 작업을보다 잘 수행합니다 man ls
. 인용 :
파일 유형을 구별하기 위해 색상을 사용하는 것은 기본적
으로 –color = never 와 함께 비활성화되어 있습니다. –color = auto를 사용하면 ls
는 표준 출력이 터미널에 연결된 경우에만 색상 코드를 방출합니다 . LS_COLORS 환경
변수는 설정을 변경할 수 있습니다. dircolors 명령을 사용하여 설정하십시오.
따라서 출력이 터미널로 가고 파이프를 소비하는 프로그램이 파이프를 소비하는 프로그램이 색상 형식을 제대로 처리하지 못할 때 파이프로 갈 때 명령이 색상 형식을 추가하게합니다.
답변
grep
GNU 프로그램 이므로 다른 옵션으로 소스 코드를 살펴볼 수 있습니다.
내부적으로 GREP를 테스트 static int color_option
중 하나에 대한 0
, 1
또는 2
.
0
채색 된 출력을 사용하지 마십시오1
항상 색상을 사용하십시오2
터미널로 인쇄 할 때 색상 만 사용
이제 --color=auto
CLI에서 인수로 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