'ls'显示两个目录。通常,任何地方的目录在黑色背景上都是蓝色的。但是第一个是绿色的蓝色,无法读取。为什么是这样?如何在黑色上将它变成蓝色,或者在深色上使它至少变成浅色?在Konsole中,蓝色略深,可以读取,尽管可能更好。

#1 楼

除了根据文件的类型为文件着色(音频文件为青绿色,存档和压缩文件为亮红色,图像和视频为紫色),ls还根据文件和目录的属性为它们着色:


带有绿色背景的黑色文本表示该目录可被拥有用户和组之外的其他人写入,并且已设置了粘性位(o+w, +t)。除了拥有用户和组的用户之外,其他用户并没有设置粘性位(o+w, -t)。

Ask Ubuntu的Stephano Palazzo对不同的属性颜色做了非常有启发性的描述:



正如terdon所指出的,可以通过dircolors修改颜色设置。可以使用dircolors --print-database访问不同的颜色设置列表。

每行输出(例如BLK 40;33;01)的形式为: />
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色背景颜色代码的形式为:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]


XTerm 256色背景颜色代码的形式为:

38;5;[FOREGROUND_COLOR]


其中FOREGROUND_COLORBACKGROUND_COLOR均为0-255范围内的数字。下面的屏幕快照显示了16和256种颜色模式的颜色代码的完整列表:



评论


Background_COLOR代码与FOREGROUND_COLOR不同;背景代码为40-47

– Ryan V. Bissell
2015年10月21日在18:55

38; 5;启动xterm 256色前景色代码。 48; 5;启动xterm 256色背景颜色代码。尽管结果相同,但我在dircolors输出中的青色是38; 5; 51而不是36。

–stevesliva
18-2-7在14:50



@stevesliva:感谢您的评论。我已经编辑了答案以正确指示背景颜色代码,并描述了256色前景色和背景颜色代码。

–托马斯·尼曼(Thomas Nyman)
18年2月22日在9:34

那么仅绿色前景是什么意思?就像我在这里吗?

– Chagai Friedlander
20年5月12日在11:22

@ChagaiFriedlander:可执行文件(请参阅图片底部)。

–托马斯·尼曼(Thomas Nyman)
20年5月12日,11:56

#2 楼

ls的颜色可以代表权限,某些系统的默认设置是显示所有人都具有绿色背景的写许可权的目录:



您可以更改颜色通过使用$LS_COLORS(来自dircolors)编辑man ls变量:您需要并将其保存为~/.dircolors

   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


例如,将其设置为红色背景上的黑色文本(请参见此处以获取颜色列表)代码):

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命令添加到您的~/.bashrc文件中。

评论


默认颜色似乎经常表明原始作者讨厌我们和我们的眼睛。

–kurtm
13-10-10在20:00

谢谢。为什么您有时写〜/ .dirname,有时写〜/ dircolors,有时写〜/ .dircolors?他们应该是一样的吗?

– Tim
15年3月26日在15:42

谢谢。为什么要评估“ $(dircolors〜/ dircolors)”;而不是更直接的方式,例如dircolors〜/ dircolors?

– Tim
15-10-22在15:27



@Tim,因为dircolors仅打印设置,因此需要评估它才能读取它们。

– terdon♦
2015年10月22日15:58

让他们读给谁听?

– Tim
15年10月22日在16:13

#3 楼

虽然所有技术答案都是正确的,但我认为这是一个非正式的警告,即您要慷慨地出示一些权利,或复制纵横交错的十字路口...(大多数情况下,我们都会这样做,以使事情一开始就起作用,嗯?)


如何使其在黑色上呈蓝色,...?


一个很好的“绿色”恢复权利您最可能希望的是以下语句:

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


如果您了解大写+ X“特殊执行”的目的,那么最好理解它的作用,即参阅Wikipedia br />

只有与'+'
一起使用,并且通常与-R选项结合使用,才能为大目录树提供组访问权限而不对普通文件(例如文本文件)设置execute
权限,如果您仅使用“ chmod -R a + rx ...

,通常会发生

#4 楼

这是我用于更改颜色的3个步骤:
首先,将默认颜色复制到文件中。然后修改该文件。您可以在其中找到一些颜色值,以及更多:
dircolors -p > ~/.dircolors

(源)
最后,将以下行添加到~/.bashrc文件中,以便在以下情况时自动加载颜色:您打开终端:
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

对于~/.zshrc
eval 'dircolors ~/.dircolors' > /dev/null


#5 楼

要快速解决此问题,(将其他可写文件变成nobg上的黄色):甚至更简单,要在nobg上进行nofg:

LS_COLORS+=':ow=01;33'


要使更改永久生效,请将其附加到您的.profile中: br />
要查看与LS_COLORS不相关的规则,请执行以下操作:




要探索终端上的33颜色,请考虑使用

如另一个答案(Thomas Nyman的答案)所述,34是前景x项256色的前缀,sed是背景x项256色的前缀。并非所有终端都支持256色。

也请参见-AskUbuntu上的ls不同的颜色是什么意思?-

评论


我发现将LS_COLORS + =':ow = 01; 33'放到〜/ .zshrc中有助于禁用git-repo中目录的颜色背景。这是在带有Pengwin-WSL发行版的Windows 10计算机上。现在,git-repo中的所有目录都是可读的。

–林丰
19年11月12日在1:21

#6 楼

那么这意味着如果您运行此文件夹,则该文件夹具有权限:


сhmodog-w AULI


它将删除bgcolor:)

#7 楼

要解决此问题,请尝试在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(OTHER_WRITABLE)选项
Bamm !!

评论


如果希望通过.dir_colors更改颜色,则可以添加OTHER_WRITABLE 34; 43。感谢:gist.github.com/jmoz/280005/…

– Sridhar Sarnobat
20年1月24日在21:29

#8 楼

您可以在腻子中更改绿色的色调以使文本可读。

打开腻子并转到Window \ Colours,
选择“ ANSI Green”,将其设置为较深的绿色(R:0 G:70 B:0)。