ls 출력 에서이 녹색 배경의 원인은 무엇입니까?


141

리눅스 컴퓨터에서 ls 출력의 screencap

'ls'로 표시되는 두 개의 디렉토리가 있습니다. 일반적으로 디렉토리는 검은 색 바탕에 파란색입니다. 그러나 첫 번째는 녹색에서 파란색이며 읽을 수 없습니다. 왜 이런거야? 검은 색으로 파란색으로 만들거나 어두운 곳에서 적어도 뭔가 밝게 만드는 방법은 무엇입니까?

이것은 Gnome Terminal에서 bash를 사용하는 Ubuntu 12.04에 있습니다. Konsole에서 파란색은 약간 어둡고 읽을 수는 있지만 더 나을 수 있습니다.

답변:


162

유형 (오디오 파일의 청록색, 아카이브 및 압축 파일의 경우 밝은 빨간색, 이미지 및 비디오의 경우 보라색)을 기준으로 파일을 색칠하는 것 외에도 ls속성에 따라 파일 및 디렉토리의 색상을 지정합니다.

  • 녹색 배경의 검은 색 텍스트는 소유 한 사용자 및 그룹 이외의 다른 사람이 디렉토리를 쓸 수 있으며 고정 비트 세트 ( o+w, +t)를 가지고 있음을 나타냅니다 .
  • 녹색 배경을 블루 텍스트가 디렉토리 떨어져 소유 사용자 및 그룹에서 다른 사람에 쓰기 권한이 있음을 나타냅니다, 그리고 않습니다 하지 sticky 비트가 설정되어 ( o+w, -t).

Stephano 집 에서 이상 우분투 질문은 서로 다른 속성의 색상을 통해이 매우 유익 사진을했다 :

터미널에서 다른 색상의 의미

으로 terdon는 지적, 색상 설정을 통해 수정할 수 있습니다 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_COLORand BACKGROUND_COLOR는 0-255 범위의 숫자입니다. 16 및 256 색상 모드의 전체 색상 코드 목록은 아래 스크린 샷에 나와 있습니다.

16 및 256 색상 모드 색상 코드


5
BACKGROUND_COLOR 코드는 FOREGROUND_COLOR과 동일하지 않습니다. 배경 코드는 40-47입니다.
Ryan V. Bissell

38;5;xterm 256 색 전경색 코드를 시작합니다 . 48;5;xterm 256 색 배경색 코드를 시작합니다. dircolors 출력의 청록색 은 결과가 동일 38;5;51 하지 않습니다 36 .
stevesliva

1
@stevesliva : 귀하의 의견에 감사드립니다. 배경색 코드를 올바르게 표시하고 256 색 전경 및 배경색 코드를 설명하기 위해 답을 편집했습니다.
토마스 니먼

55

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

여기에 이미지 설명을 입력하십시오

(부터 )를 $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파일에 추가 하십시오.


8
기본 색상은 종종 원저자가 우리와 우리의 눈을 싫어한다는 것을 나타내는 것 같습니다.
kurtm

1
감사. 왜 ~ / .dirname, 때로는 ~ / dircolors, 때로는 ~ / .dircolors를 쓰는가? 그들은 동일해야합니까?
Tim

감사. 왜 eval "$(dircolors ~/dircolors)";더 직접적인 방법 대신에 dircolors ~/dircolors?
Tim

dircolors는 설정 만 인쇄하므로 설정을 읽으려면 평가해야합니다.
terdon

그들이 누구에게 읽을 수 있도록?
Tim

11

모든 기술적 답변이 사실이지만, 나는 당신이 관대하게 또는 criss + cross를 복사 할 권리를 조금 떨어 뜨렸다는 비공식적 인 경고라고 생각합니다 ... ?)

검은 색으로 파랗게 만드는 방법 ...?

가장 가능성이 높은 권리를 되 찾을 수있는 "친환경적"인이 진술은 다음과 같습니다.

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/

대문자 + X "특별 실행"의 목적을 이해하면 그 기능을 가장 잘 이해할 수 있습니다. 즉 Wikipedia를 참조하십시오.

'+'와 함께 사용하고 일반 파일 (예 : 텍스트 파일)에 대한 실행 권한을 설정하지 않고 큰 디렉토리 트리에 그룹 또는 다른 액세스 권한을 부여하기 위해 일반적으로-+ 옵션과 함께 사용하는 경우에만 유용합니다. 방금 "chmod -R a + rx ...


8

나는 같은 질문을 했지만 terdon의 대답 은 훌륭하지만 dirname과 dircolors 사이에 혼란이 있다고 생각합니까?

어쨌든 몇 가지 추가 연구를 한 후에 색상을 변경할 수 있으므로 여기에서 솔루션을 공유하고 있습니다. 언젠가 누군가에게 유용 할 수 있습니다!

따라서 간단한 3 단계 :

우선 terdon이 말했듯이 기본 색상을 파일로 복사하십시오.

dircolors -p > ~/.dircolors

그런 다음이 파일을 수정하십시오. 내부 색상의 값을 찾을 수 있지만 여기 에서 더 많이 찾았 습니다. :)

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

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

Voilà :)


1
~/.zshrc내가 함께 가야했다 if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi. 줄 바꿈이 끔찍하다
Eric D. Johnson

2

문제를 빠르게 해결하려면 (nobg에서 다른 쓰기 가능 파일을 노란색으로 표시) :

LS_COLORS+=':ow=01;33'

교체 3334nobg에 파란색을 위해. 더 간단하게 nobg에서 nofg로 만들려면 :

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

다른 답변 (토마스 Nyman의 답변)에서 언급했듯이 38;5;전경 x 용어 256 색 및 48;5;배경 x 용어 256 색 의 접두어입니다 . 모든 터미널에서 256 색을 지원하지는 않습니다.

AskUbuntu의 -ls 에서 다른 색상의 의미는 무엇입니까?를 참조하십시오 .


1

자, 이것은 이것을 실행하면이 폴더에 permisions가 있음을 의미합니다.

сhmod og-w AU_LI

그것은 bgcolor를 제거합니다 :)


0

이 문제를 해결하려면 LS_COLORS보다 ow 매개 변수를 사용해보십시오

예를 들면 다음과 같습니다.

~LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33'
~ls -l

여기에 이미지 설명을 입력하십시오

이제 ow 옵션 을 추가하십시오

~export LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0'
~ls -l

여기에 이미지 설명을 입력하십시오


0

텍스트를 읽을 수 있도록 퍼티에서 녹색 톤을 변경할 수 있습니다.

퍼티를 열고 Window \ Colours로 이동하여 "ANSI Green"을 선택하고 진한 녹색으로 설정하십시오 (R : 0 G : 70 B : 0).

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