如何更改 OS X 和 iTerm2 终端中 ls 命令的输出颜色?

如何更改 OS X 和 iTerm2 终端中 ls 命令的输出颜色?

我知道有人问过类似的问题:

如何对 ls 的输出进行着色?

尽管我并不真正理解答案并且无法真正使其发挥作用。

然而,我尝试过一些不同的东西。我决定阅读手册页ls,它提到了在处理命令时可以设置的不同环境变量ls。如果选择该-G选项,它会显示查看CLICOLOR环境变量。我做了并且其中一个链接将您链接到环境变量的文档LSCOLORS。我去了它,它提到:

“这个变量的值描述了当使用 CLICOLOR 启用颜色时,哪个属性使用什么颜色。这个字符串是 fb 格式对的串联,其中 f 是前景色,b 是背景色。”

它还提到 LSCOLORS 的默认值是“exfxcxdxbxegedabagacad”,并且每个部分指定 ls 命令中某些特定内容的颜色。例如,示例中的第一对 ex 指定目录的颜色。第二对 fx 指定符号链接的颜色等... e 表示蓝色,x 表示默认“前景”。

1) 首先,这是什么意思:“当使用 CLICOLOR 启用颜色时”?

2) 什么是“前景”意思是?

环境变量必须是什么,ls命令才能根据我的需要对输出进行着色?


我也尝试过:

ls --color

但它给我带来了以下错误:

ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

当我这样做时发生了同样的错误ls --color=auto:它本身也会引发错误。我不知道为什么,也不确定是否是 iTerm2 或 OS X 导致的,或者为什么会发生这种情况。似乎它可以在其他系统上运行...

答案1

在试图回答我自己的问题时,我尝试了一些不同的事情,这一切都通过实验解决了。

1)我猜测“启用CLICOLOR”意味着将其设置为1(即true),因为一旦我将该变量设置为1,LSCOLOR就开始工作。

2) 在这种情况下,“前景”是指突出显示它将应用的背景。例如,第一对的 bc 表示它将目录的字符着色为红色,而背景/突出显示将为绿色。例如,如果您的环境变量为:export LSCOLORS="bCfxcxdxbxegedabagacad"

然后执行 ls 显示如下内容:

在此输入图像描述

显然,要使其工作, ls 命令必须别名为 ls -G (或者每次都执行 ls -G ),并且您必须在 .bashrc 或您使用的任何 shell rc 文件中包含以下行:

export CLICOLOR=1
export LSCOLORS="gxfxcxdxbxegedabagacad"

现在您可以按照 man ls 文件指定的方式更改 LSCOLORS。

可能有不同的方法可以实现这一点,但这就是我在 Unix、OS X mavericks 和 iTerm2 上的工作方式。

答案2

运行时替换--color为.-Gls

相关内容