'ls' 명령의 일관되지 않은 색상 출력

'ls' 명령의 일관되지 않은 색상 출력

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

내 디렉터리의 일부 파일은 흰색이고 다른 파일은 회색인 이유는 무엇입니까? 흰색은 오늘 만든 파일이고, 회색은 기존 파일인가요?

이 문제를 조사했을 때 처음에는 답이 변수에 있을 것이라고 생각했지만, 추가 조사를 통해 LS_COLORS스위치를 사용할 때와 명령을 사용할 때 색상 목록이 다르다는 사실이 밝혀졌습니다. 아래 스크린샷을 참조하세요.-l-alls

ls -l을 사용하면 "3"이라는 파일이 흰색으로 나타납니다.

-al 스위치를 사용하는 동일한 파일은 회색으로 표시됩니다.

ls -l이름이 "3" 인 파일은 흰색으로 표시되지만, -al스위치가 동일한 파일은 회색으로 표시됩니다.

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

답변1

프롬프트 문자열($PS1)는 문자에 굵은 속성을 설정하여 색상을 더 좋게 만드는 것입니다.설정되지 않음그것. 출력은 다음에서 비롯됩니다.ls그것에 대해 몰랐고,하다굵은 글씨로 설정 해제하세요. 그래서 첫 번째 컬러 출력 후ls, 모든 것이 암울해 보였습니다.

답변2

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

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

관련 정보