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
또는.0
1
2
0
컬러 출력을 사용하지 마십시오.1
항상 색상을 사용2
터미널로 인쇄할 때는 색상만 사용하세요.
이제 CLI에서 grep을 매개변수로 지정하면 --color=auto
내부적으로 변수가 color_option
로 설정됩니다 2
.
color_option
동일 하다면 컬러 출력을 비활성화하여 터미널이나 사용자에 대한 링크가 2
grep
있는지 추가로 테스트하십시오 . 이전 항목이 참이고 컬러 출력이 허용되는 경우 계속해서 어떤 색상을 사용해야 하는지 평가하고 마지막으로 색상을 인쇄합니다. STDOUT
shell environment variables
grep
CLI
소스: (grep 2.21)
grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty