저는 지역 대학에서 UNIX/Linux 입문 과정을 가르치고 있는데 제 학생 중 한 명이 다음과 같은 질문을 했습니다.
내 디렉터리의 일부 파일은 흰색이고 다른 파일은 회색인 이유는 무엇입니까? 흰색은 오늘 만든 파일이고, 회색은 기존 파일인가요?
이 문제를 조사했을 때 처음에는 답이 변수에 있을 것이라고 생각했지만, 추가 조사를 통해 LS_COLORS
스위치를 사용할 때와 명령을 사용할 때 색상 목록이 다르다는 사실이 밝혀졌습니다. 아래 스크린샷을 참조하세요.-l
-al
ls
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
처음 세 줄(파란색 점까지)은 빨간색으로 인쇄됩니다.