是否可以在 LS_COLORS 变量中设置颜色匹配的正则表达式模式?所以而不是仅仅
*.jpg=38;5;220
我可不可以做
\.(jpg|gif)=38;5;220
这只是一个例子,我想变得更复杂。我对此要求是否过高?有没有另一种方法可以让我更喜欢终端配色方案?
顺便说一句,我正在使用 zsh,所以如果我可以在那里执行但不能使用 bash,那就没问题了。
答案1
这是该ls
实用程序的一个功能GNU 核心工具。它不依赖于外壳。该语法没有记录(您应该使用dircolors
并从那里计算它),但快速查看源代码表明按名称匹配文件的唯一方法是使用*
后跟一个字符串,该字符串必须是一个后缀要匹配的文件名。该字符串按字面意思解释,除了\
和^
引入转义序列(例如\n
==^J
换行符)。
所以你不能将不同的扩展名与相同的模式匹配。但是您可以使用 shell 编程结构来构建LS_COLORS
:
for ext in jpg gif; do LS_COLORS="$LS_COLORS:*.$ext=38;5;220"; done