콘솔에서 ls를 사용하여 디렉토리의 색상을 어떻게 변경합니까?


165

내 콘솔에서 디렉토리의 색상은 파란색이므로 어두운 배경에서 읽기가 어렵습니다.

색상 정의를 ls어떻게 변경할 수 있습니까?

답변:


250

디렉토리 색상을 변경하려면 ~/.bashrc편집기로 파일을여십시오.

nano ~/.bashrc

파일 끝에 다음과 같이 입력하십시오.

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

몇 가지 좋은 색상 선택 (이 경우 0;35자주색)은 다음과 같습니다.

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

첫 번째 숫자는 스타일 (1 = 굵게)이고 그 뒤에 세미콜론이오고 실제 색상 수는 다음과 같습니다. 가능한 스타일 (효과)은 다음과 같습니다.

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

가능한 배경 :

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
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
107 = white background

가능한 모든 색상 :

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

이것들을 결합하여 다음과 같은 매개 변수를 만들 수도 있습니다.

di=1;4;31;42

LS_COLORS 변수에서 디렉토리는 녹색 배경으로 굵은 밑줄이 그어진 빨간색 텍스트로 표시됩니다!

터미널에서 이러한 모든 색상과 스타일을 테스트하려면 다음 중 하나를 사용할 수 있습니다.

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

ls 명령을 사용할 때 각 종류를 다음과 같이 정의하여 다른 종류의 파일을 변경할 수도 있습니다.

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

보다 완전한 목록은 Bigsoft-LS_COLORS 구성에 있습니다 .

일부 배포판에서는 ow"( OTHER_WRITABLE) ( 기본값)을 읽을 수없는 "( )의 배경색을 녹색 배경의 굵지 않은 파란색 텍스트 로 변경할 수도 있습니다 .

예를 들어 파일 LS_COLORS="$LS_COLORS:di=1;33".bashrc에서 검은 색 바탕에 읽을 수있는 굵은 주황색 텍스트를 얻을 수 있습니다.

.bashrc 파일을 변경 한 후 변경 사항을 적용하려면 셸을 다시 시작하거나 실행해야합니다 source ~/.bashrc.

참고 : 더 많은 명령을 콜론 과 결합 할 수 있습니다 ( 예 :

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

출처:


3
감사합니다. 개인적으로 LS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORS파란색 배경 위에 굵은 흰색으로 디렉토리를 표시하는 것이 더 좋습니다 .
isapir

2
이것은 나를 위해 작동하지 않는 것 같습니다. 덮어 쓰는 다른 구성 파일이있는 것처럼 보입니다 .bashrc-일부 색상은 작동하고 다른 색상은 다르게 보입니다. 폴더는 예를 들어 파란색 대신 녹색이지만 파일은 올바르게 보입니다. 뭐가 될수 있었는지?
Nearoo

1
bash 또는 sh를 사용하고 있는지 확인하고 홈 디렉토리에서 .profile 파일을 확인하십시오. 그리고 글로벌/etc/bash.bashrc
rubo77

5
쓰기 가능하고 끈적 거리는 다른 쓰기 가능 디렉토리를 수정하고 싶을 것입니다. 이상과 같은 시도LS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS
찰스 L.

2
그것은 ls에서 효과가 있었지만 cmd 프롬프트에서 # 전에 내가있는 디렉토리의 색상을 어떻게 변경합니까?
Gaia

31

매우 간단합니다. 이 세 줄을 ~ / .bashrc에 추가하십시오.

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

실행중인 bash 세션에서 변경 사항을 적용하려면 다음을 실행하십시오.

source ~/.bashrc

4
이것이 나를 위해 일한 유일한 것입니다.
solalito

그것은 나를 위해 일했지만 source ~/.bashrc로그인 할 때마다 실행해야합니다 . 이것을 해결할 수있는 방법이 있습니까?
Miguel

@Miguel : echo $SHELLcmd 프롬프트에서 입력 하면 무엇을 얻 습니까? 나는 아니라고 확신합니다 /bin/bash. 당신은 활동을 찾 .profile거나 끝에 .login추가 할 수 있습니다 source $HOME/.bashrc. 행운을 빕니다.
쉘터

4

LS_COLORS

이것은 LS COLORS 환경 변수로 사용하기에 적합한 extension : color 매핑 모음입니다.


1
흥미롭지 만 ksh 에서이 작업을 수행 할 수 없습니다.
Herman Toothrot

3

Hegazi의 대답 외에도 dircolors 명령을 사용하여 실제로 디렉토리 색상과 다른 많은 색상을 제어 할 수 있습니다. 잘 문서화 된 구성 파일을 작성할 수 있습니다.

다음과 같이 홈 디렉토리에 .dircolor 파일을 작성할 수 있습니다.

dircolors -p > ~/.dircolors

그런 다음 ~ / .bashrc 파일에 줄을 추가하십시오.

eval "`dircolors -b ~/.dircolors`"
alias ls='ls --color=auto'

이것은 bash에 대한 $ LS_COLORS 변수를 만듭니다. csh의 경우 -c 플래그가 설정됩니다. 또한 ls 명령에 색상을 표시하도록 플래그를 지정합니다.

~ / .dircolor 파일 색상에서 위와 같이 DIR 속성 값을 편집하여 디렉토리의 색상 (또는 다른 색상에 포함 된 다른 파일 유형)을 변경하십시오. 특정 파일의 색상을 변경하거나 직접 정의 할 수도 있습니다.


2

--color=autoMac에서 iTerm2를 사용하면 이 옵션이 작동하지 않습니다. -G옵션은 비록 작동합니다. 나는 다음 별칭을 내 ~/.profile디렉토리에 넣고 이제 디렉토리에 색상이 지정되고 후행이 /추가됩니다.

alias ls='ls -F -G'


0

이것은 일반적으로 사용되는 옵션이있는 ls 명령에 대한 나의 접근 방식입니다.

~ / .alias라는 파일에 다음 줄을 추가하십시오.

alias ll='ls -lhF --color=auto'
alias llt='ls -lht --color=auto'
alias lla='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls="ls --color=auto"

~ / .bashrc에 다음 줄을 추가하십시오.

if [ -f ~/.alias ]; then
    . ~/.alias
fi

4
당신은 추가 할 필요가 --color=auto받는 ls별칭 - 상속과 다른 별칭을 설정
스튜어트 Cardall
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.