ls 명령에 대한 컬러 출력이 적습니다. ls하면 컬러 출력이 생겨서 일종의

내가 실행 ls하면 컬러 출력이 생겨서 일종의 파일을 빠르게 볼 수 있습니다. 나는에 파이프 그것을 시도 할 때 less조차와 -r-R에 플래그는 항상 분실 색칠. 나는 사용하고 zsh버전 5.0.7을. 어떤 아이디어? 감사.

편집 : 나는 OS X에 있습니다.



답변

이것은 의도적으로 설계된 것입니다. 컬러 출력을 생성하는 프로그램은 일반적으로 출력이 파이프 나 일반 파일로 전송 될 때가 아니라 터미널로 출력 될 때에 만 수행됩니다. 그 이유는 터미널에서 전송 된 데이터는 아마도 사람에 의해 읽히는 반면 프로그램에 파이프되거나 파일에 기록 된 데이터는 일부 프로그램에 의해 구문 분석 될 가능성이 높기 때문에 색상이 바뀌는 이스케이프 시퀀스와 같은 관련없는 내용을 포함해서는 안됩니다 .

ls옵션 --color(또는 --color=auto) 을 전달하면 GNU 가 터미널에 컬러 출력을 표시합니다 . 표준 출력의 파일 유형에 관계없이 컬러 출력을 강제하려면 --color=always또는 --color=yes(동의어)를 전달하십시오. 이 규칙에는 GNU grep, FreeBSD grep 등과 같은 다른 명령이 이어졌습니다 git diff.

ls --colors=yes -l | less

FreeBSD 버전 ls(OSX에도 colorls있으며 OpenBSD 및 NetBSD 에서 포트 로 사용 가능)을 사용 -G하여 출력이 터미널 일 때 색상을 표시 하는 옵션 을 전달하십시오 . CLICOLOR_FORCE출력 파일 형식에 관계없이 색상이 표시 되도록 환경 을 설정하십시오 .

CLICOLOR_FORCE=1 ls -l | less


답변

문제는 아마도 ls프로그램에 옵션이 설정되어 있다는 것입니다. --color=auto기본적으로 출력은 터미널에 연결되어있는 경우에만 색상을 지정해야하며 그렇지 않으면 (파이프 또는 파일에 연결된 출력) 색상이 방출되지 않습니다.

그런 경우에 색상을 원한다면 --color옵션을로 설정해야 always합니다.

ls --color=always | less -R

이 동작이 항상 예상되는 경우 별명을 작성하십시오.

alias ls='ls --color=always'


답변

나는 50 개 미만의 담당자가 있기 때문에 @jimmij의 답변에 대해서는 언급 할 수 없지만 Bash에서 저에게 효과가 있었던 것을 설명하고 싶습니다.

당신이 실행하는 경우

$ man ls | grep color

man특정 쉘 환경 에 대한 페이지 의 모든 항목이 표시 됩니다 (이 경우 bash).

나를 위해 다음 조정이 트릭을 수행했습니다.

$ alias ls='ls -G'


답변