ls 명령을 적게 사용하면 색상이 출력되지 않습니다.

ls 명령을 적게 사용하면 색상이 출력되지 않습니다.

실행하면 ls컬러 출력이 나오므로 이러한 파일을 빠르게 탐색하는 데 매우 편리합니다. and 플래그를 less사용하여 파이프 를 시도하면 색상이 항상 손실됩니다. 버전 5.0.7을 사용하고 있습니다 . 어떤 아이디어가 있나요? 감사해요.-r-Rzsh

편집: 저는 OS X를 사용하고 있습니다.

답변1

이것은 의도적으로 설계된 것입니다. 컬러 출력을 생성하는 프로그램은 일반적으로 출력이 파이프나 일반 파일로 전송될 때가 아니라 터미널에 도달할 때만 그렇게 합니다. 그 이유는 터미널에 전송된 데이터는 사람이 읽을 가능성이 높은 반면, 프로그램에 파이프로 전달되거나 파일에 기록된 데이터는 일부 프로그램에 의해 구문 분석될 가능성이 높기 때문에 색상과 같은 불필요한 내용을 포함해서는 안 되기 때문입니다. - 이스케이프 시퀀스 변경.

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

ls --colors=yes -l | less

FreeBSD 버전 ls(OSX에도 있고 OpenBSD 및 NetBSD의 포트로도 있음) 의 colorls경우 터미널에 출력할 때 색상을 표시하는 옵션을 전달합니다. 출력 파일 형식에 관계없이 색상이 표시되도록 -G환경을 설정합니다 .CLICOLOR_FORCE

CLICOLOR_FORCE=1 ls -l | less

답변2

가장 가능성이 높은 문제는 ls프로그램에 옵션이 설정되어 있다는 것입니다 --color=auto. 이는 기본적으로 터미널에 연결될 때만 출력에 색상이 지정되어야 함을 의미합니다. 그렇지 않으면(출력이 파이프 또는 파일에 연결됨) 색상이 방출되지 않습니다.

색상을 갖고 싶다면 이 경우 --color옵션을 로 설정 해야 하므로 always시도해 보세요.

ls --color=always | less -R

이 동작이 항상 예상했던 동작이라면 별칭을 만드세요.

alias ls='ls --color=always'

답변3

나는 담당자가 50명 미만이기 때문에 @jimmij의 답변에 대해 언급할 수 없지만 Bash에서 나에게 도움이 된 것이 무엇인지 설명하고 싶었습니다.

당신이 달리면

$ man ls | grep color

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

나에게는 다음과 같은 조정이 트릭을 수행했습니다.

$ alias ls='ls -G'

관련 정보