打印控制台颜色

打印控制台颜色

编写了一个 bash 函数来显示控制台颜色。

但是,有些颜色好像不能这样显示! (?)

另外,请注意奇怪的“亮黑色”!

(注意:下面的屏幕转储是 xterm 的,但这意味着在控制台模式下使用。我必须使用 xterm 来获取屏幕转储。但它看起来很相似。)

清除率

function clr () {
  Color_names="bla red gre yel blu mag cya whi"
  Color_arr=($Color_names)
  for m in {0..15}
  do
    tput setaf $m
    echo -n ${Color_arr[$((m % 8))]}" "
  done
  echo
  tput sgr0
  cat /sys/module/vt/parameters/default_red \
      /sys/module/vt/parameters/default_grn \
      /sys/module/vt/parameters/default_blu | tr "," "\t"
}

答案1

如果你检查tput colors,你可能会发现答案是 8。显示明亮颜色的方法是通过tput bold

这显示了前景和背景的所有 8x8x2 组合(正常和粗体)。

for cmd in sgr0 bold; do
  tput $cmd
  for i in $(seq 0 7); do
    for j in $(seq 0 7); do
      tput setaf $i; tput setab $j; echo -n " $i,$j "
    done
    tput sgr0; echo; tput $cmd
  done
done

答案2

请参阅这篇博文: http://www.enigmacurry.com/2009/01/20/256-colors-on-the-linux-terminal/

编辑:如果你只有 8 种颜色的结果,tput-color你可以使用 ncurses 来解决你的弱点!在 ubuntu 中安装它:

sudo apt-get install ncurses-term

并在 ~/.bashrc 或 ~/bash_profile 中添加以下行:

export TERM=xterm-256color

您可以使用 emacs 命令来代替脚本来查看颜色。在终端中运行 emacsemacs -nw并输入命令M-x list-colors-display

不管你有什么终端,这个工具都可以在你所有的终端模拟器上运行;-)

答案3

有多种可用于 Linux 控制台的终端描述。最常用的当然是设置为TERM=linux

作为替代方案,有TERM=linux-16color,它会进行粗体/颜色的组合,您可以在@angus的答案中看到。

比较linuxlinux-16color表明infocmp

comparing linux to linux-16color.
    comparing booleans.
    comparing numbers.
        colors: 8, 16.
        ncv: 18, 63.
        pairs: 64, 256.
    comparing strings.
        setab: '\E[4%p1%dm', '\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m'.
        setaf: '\E[3%p1%dm', '\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;21%;m'.

和片段使用眨眼和粗体属性(显示硬件的一项功能)来根据输入到和 的%t;5%t;1获得明亮的背景和前景色。tput setabtput setaf

这是使用 ncurses 测试程序完成的屏幕截图linux-16color

linux-16color 的示例

相关内容