如何列出 LS_COLORS 的颜色?

如何列出 LS_COLORS 的颜色?

我记得它用于根据文件类型或扩展名eval "dircolors -b"显示正在使用的颜色。LS_COLORS显示的不仅仅是颜色值而是颜色本身。.png 我可以看到或.ogg文件显示的颜色,并根据需要通过自定义文件更改它。

我发现 的输出eval "dircolors -b"不再是彩色的。

有人可以解释一下我怎样才能把它拿回来吗?也许某些环境变量没有设置。否则,有解决方法吗?

答案1

试试这个脚本:

( # Run in a subshell so it won't crash current color settings
    dircolors -b >/dev/null
    IFS=:
    for ls_color in ${LS_COLORS[@]}; do # For all colors
        color=${ls_color##*=}
        ext=${ls_color%%=*}
        echo -en "\E[${color}m${ext}\E[0m " # echo color and extension
    done
    echo
)

输出:

输出截图

答案2

此版本有一些附加信息,并且不会对整行进行着色:

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       
}

部分回答作者:Askubuntu 上的 @karthick87
另外,请参阅以下答案:是什么导致 ls 输出中出现绿色背景?

相关内容