Answers:
除了根据文件的类型为文件着色(绿松石为音频文件,为存档和压缩文件为鲜红色,为图像和视频为紫色)之外,ls
还根据文件和目录的属性为文件着色:
o+w, +t
)。o+w, -t
)。来自Ask Ask Ubuntu的Stephano Palazzo对不同的属性颜色做了非常有启发性的描述:
正如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_COLOR
和BACKGROUND_COLOR
是一个数字,范围为0-255。以下屏幕截图显示了16和256色模式的颜色代码的完整列表:
38;5;
启动xterm 256色前景色代码。 48;5;
启动xterm 256色背景颜色代码。青色我dircolors输出是38;5;51
不是 36
虽然结果是一样的。
的颜色ls
可以表示权限,某些系统的默认设置是显示所有人都具有绿色背景的写权限的目录:
您可以$LS_COLORS
使用dircolors
(from 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
文件中。
eval "$(dircolors ~/dircolors)";
代替更直接的方式dircolors ~/dircolors
呢?
尽管所有技术答案都是正确的,但我认为这是一个非正式的警告,即您要慷慨地出示一些权利,或复制纵横交错的代码...(大多数情况下,我们都会这样做,以使事情最初起作用?)
如何使它变成黑色的蓝色,...?
这样的声明可以使您重新获得最可能需要的权利:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
如果您了解大写+ X“特殊执行”的目的,则最好理解它的作用,即参阅Wikipedia
仅当与'+'一起使用并且通常与-R选项结合使用时,它才可以提供对大目录树的组访问或其他访问权限,而无需设置对普通文件(例如文本文件)的执行权限,如果您刚刚使用了“ chmod -R a + rx ...
我有同样的问题,terdon的回答很好,但我认为dirname和dircolors之间有混淆吗?
无论如何,经过一些进一步的研究,我可以更改颜色,所以我在这里分享我的解决方案。有一天可能对某人有用!
因此,只需3个简单步骤:
首先,正如terdon所说,将默认颜色复制到文件中
dircolors -p > ~/.dircolors
然后修改该文件。您可以在其中找到一些颜色值,但是我在这里找到了更多:)
最后,~/.bashrc
将以下行添加到文件中,以便在打开终端时自动加载颜色:
eval 'dircolors ~/.dircolors' > /dev/null
Voilà:)
~/.zshrc
我必须去 if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi
。抱歉,换行太糟糕了
要快速解决此问题,(将其他可写文件设为nobg黄色):
LS_COLORS+=':ow=01;33'
更换33
通过34
对nobg蓝色。甚至更简单,使其在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
如另一个答案(Thomas Nyman的答案)中所述,38;5;
是前景x项256色和48;5;
背景x项256色的前缀。并非所有终端都支持256色。
另请参阅AskUbuntu上的- “ ls中不同的颜色是什么意思?”。
好吧,这意味着如果您运行此文件夹,则该文件夹具有权限:
сhmodog-w AU_LI
它将删除bgcolor :)
您可以更改腻子中的绿色调以使文本可读。
打开腻子,然后转到“窗口\颜色”,选择“ ANSI绿色”,将其设置为较深的绿色(R:0 G:70 B:0)。