`ls` 명령에서 일관성없는 컬러 출력


28

지역 대학에서 UNIX / Linux 입문 과정을 가르치고 있으며 제 학생 중 한 명이 다음과 같은 질문을했습니다.

디렉토리에있는 파일 중 일부가 흰색으로 표시되고 다른 파일이 회색으로 표시되는 이유는 무엇입니까? 흰색은 오늘 내가 만든 것과 회색은 기존 파일입니까?

나는이 I로 보면서 첫 번째 대답이 될 것이라고 생각 LS_COLORS변수지만, 추가 조사는 사용할 때 색상 옵션 다른 것으로 확인 -l대 스위치 -al와 스위치 ls명령을. 다음 스크린 샷을 참조하십시오.

ls -l을 사용하면 '3'이라는 파일이 흰색으로 표시됩니다.

-al 스위치를 사용하면 동일한 파일에 회색이 표시됩니다

ls -l'3'이라는 파일을 사용 하면 흰색으로 표시되지만 -al스위치를 사용하면 동일한 파일에 회색이 표시됩니다.

이것이 ls의 버그입니까, 아니면 이것이 왜 발생하는지 아는 사람이 있습니까?


질문 제목을 작성하십시오 : 그러한 채색은 ls명령 자체 와 관련이 없습니다 .
Drew

FWIW, LS_COLORS is을 엉망으로 만드는 가장 가까운 방법 LS_COLORS='rs=0;1' ls -l이지만 매우 다르게 보입니다.
wjandrea

4
@Drew 문제를 조사한 후에 만 ​​알 수 있습니다. 분명히 ls출력 색상을 변경할 수 있습니다.
파이프

@pipe : 아냐, 나는 오래 전에 색이 있었다는 것을 안다. 그것은 필요 의 최신 버전이 경우에도 색상을 제공 할 ls 수있는 색상을 제공합니다. ;-)
Drew

답변:


68

프롬프트 문자열이 (것처럼 보이는 $PS1) 색상이 친절하게 문자에 볼드 속성을 설정되지 않고 , 해제 를. 의 출력 ls은 이것에 대해 알지 못하며 굵게 표시 되지 않습니다 . 의 첫 번째 컬러 출력 후 ls모든 것이 어둡게 보입니다.


1
그렇습니다. $ PS1의 마지막 색상 변경 굵은 체 + 흰색 (1; 37)-감사합니다!
Bill R

3
그런 다음 승인 된 것으로 표시 할 수 있습니다.
토마스 디키

0

ls의 전체 출력은 마지막 활성 색상 으로 인쇄됩니다 . ls색상없이 호출 된 경우 :

$ printf '\e[0;31m color test\n'; /bin/ls
 color test
filea  fileb  filec  filed  filee  filef  fileg  fileh

파일 목록을 빨간색으로 인쇄합니다 .

또는 ls에 필요한 색상 변경이없는 경우 마지막 색상은 그대로 유지됩니다.

$ mkdir t1; cd t1; touch file{a..h}
$ printf '\e[0;31m color test\n'; /bin/ls --color -l
 color test
total 0
-rw-r--r-- 1 user user 0 Feb 23 01:16 filea
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user 0 Feb 23 01:16 filec
-rw-r--r-- 1 user user 0 Feb 23 01:16 filed
-rw-r--r-- 1 user user 0 Feb 23 01:16 filee
-rw-r--r-- 1 user user 0 Feb 23 01:16 filef
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileh

여전히 모두 빨간색입니다.

그러나 ls색상을 설정 한 후 (콘솔에서 사용하는 기본값으로 색상을 재설정해야 함) 그 때부터 사용 된 색상이 콘솔 기본값이됩니다.

$ printf '\e[0;31m color test\n'; /bin/ls --color -la
 color test
total 8
drwxr-xr-x 2 user user 4096 Feb 23 01:16 .
drwxr-x--- 7 user user 4096 Feb 23 01:15 ..
-rw-r--r-- 1 user user    0 Feb 23 01:16 filea
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user    0 Feb 23 01:16 filec
-rw-r--r-- 1 user user    0 Feb 23 01:16 filed
-rw-r--r-- 1 user user    0 Feb 23 01:16 filee
-rw-r--r-- 1 user user    0 Feb 23 01:16 filef
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileh

처음 세 줄 (파란색 점까지)이 빨간색으로 인쇄됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.