ls 출력에서 ​​녹색 배경이 나타나는 이유는 무엇입니까?

ls 출력에서 ​​녹색 배경이 나타나는 이유는 무엇입니까?

Linux 시스템의 ls 출력 화면 캡처

'ls'로 표시된 두 개의 디렉토리가 있습니다. 일반적으로 디렉토리는 검정색 배경에 파란색입니다. 하지만 첫 번째 것은 녹색 바탕에 파란색이어서 읽을 수 없습니다. 왜 이런거야? 검은색 바탕에 파란색을 만드는 방법, 아니면 최소한 어두운 바탕에 밝은색을 만드는 방법은 무엇입니까?

이것은 Gnome Terminal에서 bash를 사용하는 Ubuntu 12.04입니다. Konsole에서는 파란색이 약간 더 어두워서 읽을 수 있지만 훨씬 더 좋을 수도 있습니다.

답변1

유형에 따른 파일 색상 지정(오디오 파일의 경우 청록색, 아카이브 및 압축 파일의 경우 밝은 빨간색, 이미지 및 비디오의 경우 보라색) 외에도 ls속성에 따라 파일 및 디렉터리의 색상이 지정됩니다.

  • 녹색 배경의 검정색 텍스트는 소유한 사용자 및 그룹을 제외한 다른 사용자가 디렉터리에 쓸 수 있고 고정 비트가 설정되어 있음을 나타냅니다( o+w, +t).
  • 녹색 배경의 파란색 텍스트는 소유한 사용자 및 그룹을 제외한 다른 사용자가 디렉토리에 쓸 수 있음을 나타냅니다.~ 아니다스티키 비트를 설정합니다( o+w, -t).

스테파노 팔라초에 끝났다우분투에 물어보세요다양한 속성 색상에 대해 매우 유익한 그림을 만들었습니다.

터미널의 다양한 색상은 무엇을 의미합니까?

처럼테르돈지적했듯이 색상 설정은 다음을 통해 수정할 수 있습니다.dircolors. 다양한 색상 설정 목록은 를 사용하여 액세스할 수 있습니다 dircolors --print-database.

와 같은 각 출력 줄의 BLK 40;33;01형식은 다음과 같습니다.

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET채색 규칙의 대상을 나타냅니다.

  • TEXT_STYLE텍스트 스타일을 나타냅니다.

    • 00= 없음
    • 01= 굵은 글씨
    • 04= 밑줄
    • 05= 깜박임
    • 07= 역방향,
    • 08= 숨김
  • FOREGROUND_COLOR전경색을 나타냅니다.

    • 30= 검정색
    • 31= 빨간색
    • 32= 녹색
    • 33= 노란색
    • 34= 파란색,
    • 35= 마젠타색
    • 36= 청록색
    • 37= 흰색
  • BACKGROUND_COLOR배경색을 나타냅니다.

    • 40= 검정색
    • 41= 빨간색
    • 42= 녹색
    • 43= 노란색
    • 44= 파란색,
    • 45= 마젠타색
    • 46= 청록색
    • 47= 흰색

필드는 오른쪽부터 생략할 수 있습니다. 예를 들어 .tar 01;31굵은 글씨와 빨간색을 의미합니다.

XTerm 및 대부분의 기타 최신 터미널 에뮬레이터는 256색을 지원합니다.

XTerm 256색 전경색 코드의 형식은 다음과 같습니다.

38;5;[FOREGROUND_COLOR]

XTerm 256색 배경색 코드의 형식은 다음과 같습니다.

48;5;[BACKGROUND_COLOR]

여기서 FOREGROUND_COLOR및 는 모두 BACKGROUND_COLOR0-255 범위의 숫자입니다. 16 및 256 색상 모드에 대한 전체 색상 코드 목록은 아래 스크린샷에 표시되어 있습니다.

16 및 256 색상 모드 색상 코드

답변2

색상은 ls권한을 나타낼 수 있습니다. 일부 시스템의 기본값은 모든 사람에게 쓰기 권한이 있는 디렉터리를 녹색 배경으로 표시하는 것입니다.

여기에 이미지 설명을 입력하세요

(from )을 $LS_COLORS사용하여 변수를 편집하여 색상을 변경할 수 있습니다 .dircolorsman ls

   Using color to distinguish file types is disabled both by  default  and
   with  --color=never.  With --color=auto, ls emits color codes only when
   standard output is connected to a terminal.  The LS_COLORS  environment
   variable can change the settings.  Use the dircolors command to set it.

여기서 구문은 분명히 짜증나는 일이지만 원하는 색상으로 파일을 만들고 다음과 같이 저장하여 이 색상을 변경할 수 있습니다 ~/.dircolors.

dircolors -p > ~/.dircolors

해당 명령은 기본값을 ~/.dircolors. 그런 다음 해당 파일을 편집하고 다음 줄을 변경해야 합니다.

OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky

예를 들어 빨간색 배경에 검은색 텍스트를 만들려면(참조여기색상 코드 목록을 보려면):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky

모든 기본값을 가질 필요는 없으며, 한 줄로 파일을 생성하고 변경하려는 항목만 재정의할 수도 있습니다. 어쨌든 파일을 만든 후에는 다음을 사용하여 로드하세요.

eval "$(dircolors ~/.dircolors)";

그리고 실제로는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

자동으로 실행되도록 하려면 eval위 명령을 ~/.bashrc파일에 추가하세요.

답변3

tldr; 그냥 고치는 방법은?

문제를 신속하게 해결하려면:

LS_COLORS+=':ow=01;33'
  • nobg에서 다른 쓰기 가능한 파일을 노란색으로 표시합니다.
  • 이를 영구적으로 만들려면 쉘 프로필(예 ~/.bashrc: , 등)을 편집하십시오.~/.profile

자세한 내용은:

on 을 로 33바꾸 십시오 . 더 간단하게 만들려면 다음을 수행 하세요 .34bluenobgnofgnobg

LS_COLORS+=:ow=

변경 사항을 영구적으로 적용하려면 .profile에 추가하세요.

echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile

비확장 관련 규칙을 보려면 다음을 수행하십시오 LS_COLORS.

echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'

sed각 규칙을 한 줄에 배치하고 grep다음으로 시작하는 규칙을 제거합니다.*.'.


ls터미널의 색상을 살펴보려면 다음을 사용해 보세요.

C="$LS_COLORS"
function sc () {
    echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
    ls /mnt # Or the path to your example directory.
}

그 다음에

LS_COLORS="$C:ow=38;5;250;48;5;025";t

다른 답변(Thomas Nyman의 답변)에 명시된 바와 같이 전경 x 항 256색 및 배경 x 항 256 색상 38;5;의 접두사입니다 . 48;5;하지만 모든 터미널에서 256색이 지원되는 것은 아닙니다.

또한 참조하십시오-ls의 다양한 색상은 무엇을 의미하나요?-AskUbuntu에서.

답변4

색상을 변경하는 데 사용한 3단계는 다음과 같습니다.

먼저 기본 색상을 파일에 복사합니다.

dircolors -p > ~/.dircolors

그런 다음 이 파일을 수정하십시오. 내부의 색상에 대한 몇 가지 값을 찾을 수 있으며 여기에 몇 가지가 더 있습니다.

Code    Color
0   Default Colour
1   Bold
4   Underlined
5   Flashing Text
7   Reverse Field
31  Red
32  Green
33  Orange
34  Blue
35  Purple
36  Cyan
37  Grey
40  Black Background
41  Red Background
42  Green Background
43  Orange Background
44  Blue Background
45  Purple Background
46  Cyan Background
47  Grey Background
90  Dark Grey
91  Light Red
92  Light Green
93  Yellow
94  Light Blue
95  Light Purple
96  Turquoise
100  Dark Grey Background
101  Light Red Background
102  Light Green Background
103  Yellow Background
104  Light Blue Background
105  Light Purple Background
106  Turquoise Background

(원천)

~/.bashrc마지막으로 터미널을 열 때 색상이 자동으로 로드되도록 다음 줄을 파일에 추가합니다 .

eval 'dircolors ~/.dircolors' > /dev/null

을 위한 ~/.zshrc:

if [[ -f ~/.dircolors ]] ; then
    eval $(dircolors -b ~/.dircolors)     
elif [[ -f /etc/DIR_COLORS ]] ; then
    eval $(dircolors -b /etc/DIR_COLORS)
fi

관련 정보