所以我知道有一种方法可以更改目录、常规文件、bash 脚本等的文本颜色。有没有一种方法可以根据 更改文件的颜色_file extension_
?
例子:
$ ls -l
foo.txt [is red]
foo.text [is blue]
foo.secret [is green]
foo.txt [is red]
答案1
是的,使用LS_COLORS
变量(假设 GNU ls
)。操纵它的最简单方法是使用dircolors
:
dircolors --print-database > dircolors.txt
将转储当前设置到dircolors.txt
,然后您可以对其进行编辑;添加设置后,
eval $(dircolors dircolors.txt)
将更新LS_COLORS
并导出它。您应该将其添加到 shell 启动脚本中。
要应用您提供的示例设置,要添加的条目dircolors.txt
将是
.txt 00;31
.text 00;34
.secret 00;32
答案2
实现此目的的一种方法(不是最好的方法)是创建一个自定义 shell 函数:
myls() {
for f in *; do
if [ "${f##*.}" = txt ]; then
printf '\e[1;31m%s\e[0m\n' "$f"
elif [ "${f##*.}" = text ]; then
printf '\e[1;34m%s\e[0m\n' "$f"
elif [ "${f##*.}" = secret ]; then
printf '\e[1;32m%s\e[0m\n' "$f"
else
printf '%s\n' "$f"
fi
done
}
进一步阅读: