你如何确定bash ls颜色的含义?

时间:2009-02-28 14:53:27

标签: linux shell ls ls-colors

当您在bash shell中执行ls时,有时会有颜色指示不同的资源类型,您可以使用--color参数启用/控制它。

但是,手册页和谷歌都没有提供这个问题的答案:

默认情况下这些颜色表示什么,以及如何显示当前系统使用的内容?


更新:

感谢大家到目前为止的答案,但为了更容易选择胜利者,任何人都可以更进一步,并提供一种方法来输出他们适用的颜色描述。

嗯...我的例子在发布时不起作用(仅在预览时),所以如果你预览这段代码,它会表明我的意思......

<ul style="list-style:none; background:black; margin:0;padding:0.5em; width:10em">
  <li style="color:blue">directory</li>
  <li style="color:aqua">symbolic link</li>
  <li style="color:#A00000;">*.tar files</li>
  <li style="color:white">...</li>
</ul>

感谢。

5 个答案:

答案 0 :(得分:45)

颜色由$LS_COLORS环境变量定义。根据您的发行版,它会在shell启动时自动生成,使用~/.dircolors/etc/DIR_COLORS

修改

要列出颜色含义,请使用以下脚本:

eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')
{
  IFS=:
  for i in $LS_COLORS
  do
    echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"
  done
}

答案 1 :(得分:18)

运行命令dircolors -p将打印所有默认颜色设置。 请参阅http://linux.about.com/library/cmd/blcmdl1_dircolors.htm

答案 2 :(得分:3)

您应该能够在/ etc / DIR_COLORS中看到映射列表。您可以通过在主目录中创建.dir_colors来覆盖它。

答案 3 :(得分:3)

尝试“man 5 dir_colors”,了解它是如何在您的系统上设置的。我没有/ etc / DIR_COLORS所以它必须设置在其他地方。

答案 4 :(得分:2)

谷歌的 LS_COLORS 以获取一些有用的链接。

编辑:要列出颜色,这个简单的bash脚本可能会有一个想法:

IFS=:
set $LS_COLORS
for C in $*
do
    IFS='='
    set $C
    echo -e "\033[$2m$1\033[00m"
done