如何在控制台中使用 ls 更改目录的颜色?

rub*_*o77 227 colors console ls

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

如何更改 的颜色定义ls

rub*_*o77 321

要更改目录颜色,请~/.bashrc使用编辑器打开文件

nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

并在文件末尾输入以下内容:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS
Run Code Online (Sandbox Code Playgroud)

一些不错的颜色选择(在这种情况下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
Run Code Online (Sandbox Code Playgroud)

第一个数字是样式(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)
Run Code Online (Sandbox Code Playgroud)

可能的背景:

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
Run Code Online (Sandbox Code Playgroud)

所有可能的颜色:

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
Run Code Online (Sandbox Code Playgroud)

这些甚至可以组合起来,这样一个参数就像:

di=1;4;31;42
Run Code Online (Sandbox Code Playgroud)

在您的 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
Run Code Online (Sandbox Code Playgroud)

您还可以在使用 ls 命令时更改其他类型的文件,方法是定义每种类型:

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
Run Code Online (Sandbox Code Playgroud)

Bigsoft-Configuring LS_COLORS 中提供了更完整的列表。

在某些发行版上,您可能还想将ow“( OTHER_WRITABLE) 的默认值不可读”的背景颜色更改为例如绿色背景上的非粗体蓝色文本。

例如LS_COLORS="$LS_COLORS:di=1;33",您可以在.bashrc文件末尾使用,以在黑色背景上获得可读性强的橙色粗体文本。

更改 .bashrc 文件后,要使更改生效,您必须重新启动 shell 或运行 .bashrc source ~/.bashrc

注意:您可以将更多命令与冒号组合,例如

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls
Run Code Online (Sandbox Code Playgroud)

来源:

  • 您可能想要修改其他可写和粘性其他可写目录。尝试更像 `LS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; 导出 LS_COLORS` (7认同)
  • 这很好用,谢谢。我个人发现设置 `LS_COLORS=$LS_COLORS:'di=1;44:' 更好;导出 LS_COLORS`,它在蓝色背景上以粗体白色显示目录。 (6认同)
  • 这似乎对我不起作用。看起来在某处有另一个配置文件覆盖了`.bashrc` - 一些颜色有效,另一些看起来不同。例如,文件夹是绿色而不是蓝色,但文件看起来正确。会是什么呢? (2认同)
  • 这适用于 ls,但是如何在 cmd 提示符中的 # 之前更改我所在目录的颜色? (2认同)

小智 42

很简单。将这三行添加到 ~/.bashrc

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

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

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一对我有用的东西。 (6认同)
  • `zsh:找不到命令:dircolors` (2认同)

Nag*_*gev 8

我不喜欢删除所有颜色,因为它们仍然有用。我更喜欢保留当前的默认设置,只删除目录上的绿色背景。为了达到这种效果,我只需在我的末尾添加一行~/.bashrc

export LS_COLORS=$LS_COLORS:'ow=1;34:'
Run Code Online (Sandbox Code Playgroud)


小智 7

除了 Hegazi 的回答之外,您实际上可以使用 dircolors 命令控制目录颜色和许多其他颜色。您可以创建一个有据可查的配置文件。

您可以在您的主目录中创建一个 .dircolor 文件,如下所示:

dircolors -p > ~/.dircolors
Run Code Online (Sandbox Code Playgroud)

然后在您的 ~/.bashrc 文件中添加行

eval "`dircolors -b ~/.dircolors`"
alias ls='ls --color=auto'
Run Code Online (Sandbox Code Playgroud)

这将为 bash 创建一个 $LS_COLORS 变量。-c 标志将设置为 csh。它还标记 ls 命令以彩色显示。

如上所述在 ~/.dircolor 文件颜色中编辑 DIR 属性的值以更改目录的颜色(或任何其他包含的其他颜色的文件类型)。您还可以更改特定文件的颜色,或定义自己的颜色。


rub*_*o77 6

LS_颜色

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