我知道有人问过类似的问题:
尽管我并不真正理解答案并且无法真正使其发挥作用。
然而,我尝试过一些不同的东西。我决定阅读手册页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
为.-G
ls