如何更改ls中不同文件的颜色

如何更改ls中不同文件的颜色

所以我知道有一种方法可以更改目录、常规文件、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
}

进一步阅读:

相关内容