ls 출력의 색상을 설정하려고 하는데 LS_COLORS
어떤 이유로 파일 일치 패턴이 무시됩니다. 실행 파일, 디렉터리 등을 올바르게 색칠하고 있지만 *로 시작하는 파일 일치 패턴을 완전히 무시하는 것 같습니다.
문자열 자체가 정확하다는 것을 알고 있습니다. 왜냐하면 다른 컴퓨터에서 문자열을 시도했고 예상대로 작동했기 때문입니다. 또한 문자열의 해당 부분을 제거하면 색상이 지정된 출력이 나오지 않기 fi
때문에 이러한 값은 모두 포괄 값으로 덮어쓰여지지 않는다는 것도 알고 있습니다 . 나는 다른 ls 버전이 아닌 GNU ls를 사용하고 있음을 확인했습니다.di
LS_COLORS
문자열 자체는 꽤 길지만 테스트용으로 만든 잘린 버전은 다음과 같습니다(실제 문자열과 동일하며 LS_COLORS
문자열 시작 부분에서 약 200개의 확장자를 제거했습니다).
*.war=38;5;215:*.wav=38;5;136;1:*.webloc=38;5;116:*.webm=38;5;115:*.webp=38;5;97:*.wma=38;5;137;1:*.wmv=38;5;114:*.woff=38;5;66:*.woff2=38;5;66:*.wrl=38;5;216:*.wv=38;5;136;1:*.wvc=38;5;136;1:*.xcconfig=1:*.xcf=38;5;7:*.xcsettings=1:*.xcuserstate=1:*.xcworkspacedata=1:*.xib=38;5;208:*.xla=38;5;76:*.xln=38;5;7:*.xls=38;5;112:*.xlsx=38;5;112:*.xlsxm=38;5;112;4:*.xltm=38;5;73;4:*.xltx=38;5;73:*.xml=38;5;178:*.xpi=38;5;215:*.xpm=38;5;97:*.xsd=38;5;178:*.xsh=38;5;41:*.yaml=38;5;178:*.yml=38;5;178:*.z[0-9]{0,2}=38;5;239:*.zcompdump=38;5;241:*.zig=38;5;81:*.zlogin=1:*.zlogout=1:*.zprofile=1:*.zsh=38;5;172:*.zshenv=1:*.zwc=38;5;241:*.zx[0-9]{0,2}=38;5;239:bd=38;5;68:ca=38;5;17:cd=38;5;113;1:di=38;5;30:do=38;5;127:ex=38;5;208;1:pi=38;5;126:fi=0:ln=target:mh=38;5;222;1:no=0:or=48;5;196;38;5;232;1:ow=38;5;220;1:sg=48;5;3;38;5;0:su=38;5;220;1;3;100;1:so=38;5;197:st=38;5;86;48;5;234:tw=48;5;235;38;5;139;3:
여기서 무슨 일이 일어나고 있는지 아시나요?
답변1
(이런 문제가 발생하는 다른 사람을 위한 간략한 설명: 보고 있는 파일이 실행 가능한 파일이 아닌지 다시 확인하세요. 실행 가능한 파일이라면 모두 $LS_COLORS 대신에 'ex' 섹션의 색상이 지정됩니다. 확장자에 해당하는 색상입니다.)
이는 운영자의 실수로 밝혀졌습니다. 내 테스트 디렉터리의 모든 파일이 예기치 않게 실행 파일로 설정되어 실행 파일에 할당한 색상(주황색)이 모두 지정되었습니다. $LS_COLORS의 내용을 기반으로 색상을 지정해야 하는 확장자를 가진 파일에서 실행 가능 비트를 수동으로 제거했을 때 예상대로 작동했습니다.