コンソールカラー印刷

コンソールカラー印刷

コンソールの色を表示する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-colorncursesを使用して弱点を解決できます! Ubuntuにインストールしてください:

sudo apt-get install ncurses-term

そして、〜/.bashrcまたは〜/bash_profileに次の行を追加します。

export TERM=xterm-256color

スクリプトの代わりにemacsコマンドを使用して色を表示できます。端末でemacsを実行し、emacs -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の例

関連情報