在我的控制台上,目录的颜色是蓝色,很难在深色背景上阅读。

如何更改ls的颜色定义?

评论

使用LSCOLORS Generator;在外壳的rc中设置并导出LSCOLORS。

相关问题:如何删除目录的背景色?

#1 楼

要更改目录颜色,请使用编辑器打开您的~/.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


所有可能的颜色:

30  = black
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命令时,还可以通过定义每种类型的机智来更改其他类型的文件。 h:

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),其默认值不可读”)例如为绿色背景上的非粗体蓝色文本。

更改.bashrc文件后,要使更改生效,必须重新启动Shell或运行LS_COLORS="$LS_COLORS:di=1;33"

/>注意:您可以将更多命令与冒号结合使用,例如

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


源:



颜色Lscolors-Linux StepByStep
极客Gumbo-在Bash中更改目录颜色


评论


很好,谢谢。我个人发现最好将LS_COLORS = $ LS_COLORS:'di = 1; 44:'设置为;导出LS_COLORS,在蓝色背景上以粗体白色显示目录。

–isapir
16年3月18日在18:52

这似乎对我不起作用。看起来某个地方覆盖了.bashrc的另一个配置文件-有些颜色可以工作,而其他颜色则看起来有所不同。例如,文件夹是绿色而不是蓝色,但是文件看起来正确。会是什么呢?

– Nearoo
16年7月9日在8:42

检查您使用的是bash还是sh,还检查主目录中的.profile文件。和全局/etc/bash.bashrc

–rubo77
16年7月9日在9:52

您可能想要修改其他可写和可粘贴的其他可写目录。尝试更多类似LS_COLORS = $ LS_COLORS:'tw = 01; 35:ow = 01; 35:';导出LS_COLORS

–Charles L.
17年5月25日在19:57

适用于ls,但是如何在cmd提示符中的#之前更改我所在目录的颜色?

–盖亚
18年1月3日在6:00

#2 楼

非常简单。
将这三行添加到〜/ .bashrc

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


如果要在运行的bash会话中应用更改,请运行:

source ~/.bashrc


评论


这是唯一对我有用的东西。

– Solalito
17年1月29日在7:54

它对我有用,但每次登录时我都需要运行source〜/ .bashrc。有什么方法可以解决此问题?

–米格尔
18年11月29日在11:11

@Miguel:在cmd提示符下键入echo $ SHELL会得到什么?我敢打赌这不是/ bin / bash。您可以找到活动的.profile或.login并在最后添加源$ HOME / .bashrc。祝好运。

–脱壳机
19 Mar 19 '19在18:33



zsh:找不到命令:dircolors

–警报
20年7月18日在10:43

#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属性的值以更改目录的颜色(或其他任何包含的颜色)其他颜色的文件类型)。
您还可以更改特定文件的颜色或定义自己的文件。

#4 楼

LS_COLORS

这是extension:color映射的集合,适合用作LS COLORS环境变量。

评论


有趣,但是我无法在ksh中完成这项工作。

–Herman牙刷
16年8月17日在12:50

#5 楼

在Mac上使用iTerm2时,--color=auto选项对我不起作用。 -G选项可以工作。我在~/.profile中放置了以下别名,现在目录已着色并附加了结尾的/

alias ls='ls -F -G'


评论


这是因为它是BSD utils,而不是coreutils :)

– Meeh
19-10-3在19:35

#6 楼

这是使用常用选项执行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"


add的文件中将以下行放入〜/ .bashrc

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


评论


您只需要在ls别名上添加--color = auto-其他别名将继承设置

–Stuart Cardall
17-10-25在16:22

#7 楼

对于本解决方案,--color=auto可能没有任何区别。您想要的选项是--color=never。尽管通过cat(或more)传递输出也可以消除颜色,并且输入起来更快:
是将浅蓝色对浅绿色设为默认值。)