やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ターミナルの色数を設定する(`toe -a`, `tput colors`, `${TERM}`)

 ansi, xterm-256colorなど。

手順

 ターミナルの色数はふつう8色である。

$ tput colors
8

 これを256色にしたいときは以下のようにする。

export TERM=xterm-256color
$ tput colors
256

 ターミナルを起動するたびに自動で設定したいときは~/.bashrcに以下を書く。

~/.bashrc

export TERM=xterm-256color

 ここまではよく見かける。次が初見だった。toe -aで変数TERMに設定する値の一覧ができる。

toe -a

 数が多い。数えてみたら1719もあった。

$ toe -a | wc -l
1719

 toe -aの出力は名前\t説明になっている。名前だけを抽出して256と名のつくものに絞り込む。

toe -a | cut -f1 | grep '256'

 バージョンは以下。

$ toe -V
ncurses 6.0.20161126

 説明がないヘルプは以下。

$ toe --help
toe: invalid option -- '-'
usage: toe [-ahsuUV] [-v n] [file...]

 manで説明を見るとよい。英語……。

$ man toe

 ~/.bashrcにはxterm-256colorが存在するときだけset TERMすると良さそう。

~/.bashrc

[[ -n $(toe -a | cut -f1 | grep 'xterm-256color') ]] && set TERM='xterm-256color

 terminfoをキーワードに検索すれば詳しく調べられそう。面倒なので省略。

フルカラー

 フルカラー(24bit color, TrueColor, 約1677万色)に対応しているターミナルアプリはまだ少ないらしい。

 未だに256色しか使えない環境というのも時代遅れな気がするが、大抵はそこまで必要ないとも思う。でも欲しい。フルカラー対応ターミナル一覧にはKittyもあった。Kittyがビルドできなかったのが悔やまれる。

プロンプト

 ターミナルを起動するとユーザ名やカレントディレクトリが表示される。これを「プロンプト」という。

pi@raspberrypi:/tmp/work $ 

 プロンプトの表示内容や色はPS1環境変数で指定できる。

$ echo "$PS1"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] 

 設定するときはexportする。

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] "

ANSIエスケープシーケンス

 \033[01;32m\]のような暗号はANSIエスケープシーケンスである。色の設定などができる。

 こんな暗号を使いこなすなど面倒。そのうちライブラリ作りたい。

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
  • python 2.7.13, pip 9.0.1
  • python3 3.5.3, pip3 9.0.1
  • ranger 1.9.2
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

参考