'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_COLOR
0-255 범위의 숫자입니다. 16 및 256 색상 모드에 대한 전체 색상 코드 목록은 아래 스크린샷에 표시되어 있습니다.
답변2
색상은 ls
권한을 나타낼 수 있습니다. 일부 시스템의 기본값은 모든 사람에게 쓰기 권한이 있는 디렉터리를 녹색 배경으로 표시하는 것입니다.
(from )을 $LS_COLORS
사용하여 변수를 편집하여 색상을 변경할 수 있습니다 .dircolors
man 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
바꾸 십시오 . 더 간단하게 만들려면 다음을 수행 하세요 .34
blue
nobg
nofg
nobg
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