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

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

AFAICT, GNU 매뉴얼 페이지 모두 그것이 의미하는 바를 grep명시 하지 않습니다 .info grep--color=auto

나는 이 선택의 의미가 즉각적으로 명확하지 않은 지구상에서 몇 안 되는 사람 중 하나임에 틀림없습니다.

나는 --color=auto"그렇다.어딘가에사이" --color=never와 사이에 --color=always있지만 아직 지정되지 않은 부분이 너무 많습니다.

답변1

규칙은 와 동일하므로 ls에 문서화하는 것이 좋습니다 man ls. 인용하다:


파일 유형을 구별하기 위한 색상 사용은 기본적으로 비활성화되어 있으며 --color=never가 사용되는 경우에도 마찬가지입니다. --color=auto를 사용하면 ls는
표준 출력이 터미널에 연결된 경우에만 색상 코드를 내보냅니다. LS_COLORS 환경
변수는 설정을 변경할 수 있습니다. 이를 설정하려면 dircolors 명령을 사용하십시오.

따라서 출력이 파이프로 들어갈 때가 아니라 출력이 터미널로 들어갈 때만 명령이 색상 서식을 추가하도록 하며 파이프를 사용하는 프로그램은 색상 서식을 잘 처리하지 못할 수 있습니다.

답변2

이것은 GNU 프로그램 이므로 grep소스 코드를 보는 것이 또 다른 옵션일 수 있습니다.


grep 내부 테스트 static int color_option또는.012

  • 0컬러 출력을 사용하지 마십시오.
  • 1항상 색상을 사용
  • 2터미널로 인쇄할 때는 색상만 사용하세요.

이제 CLI에서 grep을 매개변수로 지정하면 --color=auto내부적으로 변수가 color_option로 설정됩니다 2.

color_option동일 하다면 컬러 출력을 비활성화하여 터미널이나 사용자에 대한 링크가 2 grep있는지 추가로 테스트하십시오 . 이전 항목이 참이고 컬러 출력이 허용되는 경우 계속해서 어떤 색상을 사용해야 하는지 평가하고 마지막으로 색상을 인쇄합니다. STDOUTshell environment variablesgrepCLI


소스: (grep 2.21)

grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty 

관련 정보