Dar*_*enW 211 ls colors terminal

'ls' 显示了两个目录。通常,任何地方的目录都是黑色背景上的蓝色。但第一个是蓝底绿字,无法阅读。为什么是这样?如何使它在黑色上变成蓝色,或者至少在深色上有一些亮色?
这是在 Ubuntu 12.04 上,在 Gnome 终端中使用 bash。在 Konsole 中,蓝色略深,可以阅读,但可能会更好。
Tho*_*man 231
除了根据文件类型为文件着色(音频文件为绿松石,档案和压缩文件为鲜红色,图像和视频为紫色),ls还根据文件和目录的属性为文件和目录着色:
o+w, +t)。o+w, -t)。Stephano宫过在问的Ubuntu已经取得了不同属性的颜色这很有启发性的画面:

正如terdon 所指出的,颜色设置可以通过dircolors. 可以使用 访问不同着色设置的列表dircolors --print-database。
每行输出,例如BLK 40;33;01,都是以下形式:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
XTerm 256 色背景颜色代码的形式如下:
48;5;[BACKGROUND_COLOR]
Run Code Online (Sandbox Code Playgroud)
其中FOREGROUND_COLOR和BACKGROUND_COLOR都是 0-255 范围内的数字。以下屏幕截图显示了 16 和 256 色模式的完整颜色代码列表:
ter*_*don 71
的颜色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.
Run Code Online (Sandbox Code Playgroud)
诚然,这里的语法有点烦人,但您可以通过使用所需颜色创建文件并将其另存为来更改此颜色~/.dircolors:
dircolors -p > ~/.dircolors
Run Code Online (Sandbox Code Playgroud)
该命令会将默认值打印到~/.dircolors. 然后,您需要编辑该文件并更改此行:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
Run Code Online (Sandbox Code Playgroud)
例如,要使其成为红色背景上的黑色文本(有关颜色代码列表,请参见此处):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
Run Code Online (Sandbox Code Playgroud)
您不需要拥有所有默认值,您也可以只用一行创建一个文件,重新定义您想要更改的那个。无论如何,一旦您创建了文件,请使用以下命令加载它:
eval "$(dircolors ~/.dircolors)";
Run Code Online (Sandbox Code Playgroud)
这是在行动:

要自动发生这种情况,请将eval上面的命令添加到您的~/.bashrc文件中。
Fra*_*cke 18
虽然所有的技术答案都是正确的,但我认为这是一个非正式的警告,你慷慨地或复制纵横交错的权利...... ?)
如何使它在黑色上变成蓝色,...?
一个很好的“去绿色化”来恢复你最可能想要的权利,是这样的声明:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Run Code Online (Sandbox Code Playgroud)
最好理解它的作用,如果您了解大写 +X“特殊执行”的目的,即参见维基百科
它仅在与 '+' 一起使用时才真正有用,并且通常与 -R 选项结合使用,以便在不设置普通文件(例如文本文件)的执行权限的情况下授予组或其他访问大目录树的权限,这通常会在以下情况下发生你刚刚使用了“chmod -R a+rx ...
Kev*_*inG 14
以下是我用来更改颜色的 3 个步骤:
首先,将默认颜色复制到文件中
dircolors -p > ~/.dircolors
Run Code Online (Sandbox Code Playgroud)
然后修改这个文件。你可以在里面找到一些颜色的值,这里还有一些:
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
Run Code Online (Sandbox Code Playgroud)
(来源)
最后,~/.bashrc将以下行添加到您的文件中,以便在您打开终端时自动加载颜色:
eval 'dircolors ~/.dircolors' > /dev/null
Run Code Online (Sandbox Code Playgroud)
对于~/.zshrc:
if [[ -f ~/.dircolors ]] ; then
eval $(dircolors -b ~/.dircolors)
elif [[ -f /etc/DIR_COLORS ]] ; then
eval $(dircolors -b /etc/DIR_COLORS)
fi
Run Code Online (Sandbox Code Playgroud)
lox*_*axs 10
要快速解决问题:
LS_COLORS+=':ow=01;33'
Run Code Online (Sandbox Code Playgroud)
~/.bashrc、~/.profile等)以使其永久化。更换33用34的blue上nobg。更简单的方法nofg是nobg:
LS_COLORS+=:ow=
Run Code Online (Sandbox Code Playgroud)
要使您的更改永久化,请将其附加到您的 .profile:
echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile
Run Code Online (Sandbox Code Playgroud)
查看 的非扩展相关规则LS_COLORS:
echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
Run Code Online (Sandbox Code Playgroud)
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.
}
Run Code Online (Sandbox Code Playgroud)
然后
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Run Code Online (Sandbox Code Playgroud)
正如另一个答案(Thomas Nyman 的答案)中所述,38;5;是前景 x-term 256-colors 和48;5;背景 x-term 256-colors的前缀。不过,并非所有终端都支持 256 色。
另请参阅- AskUbuntu 上的- ls 中不同颜色的含义是什么? -。