私はmacOSでzshとiTermをターミナルエミュレータとして使用しており、私の環境ではデフォルトでTERM=xterm-256color
これを行います。
実行すると、tput setaf 3
コード0で終了します。
設定しTERM=vt100
て実行すると、tput setaf 3
コード1(失敗を示す)で終了します。
なぜですか?
答え1
vt100
気づかずに失敗する機能setaf
。tput
定義はデータベースにありますterminfo(5)
。
% TERM=xterm-256color infocmp | grep setaf
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
% TERM=vt100 infocmp | grep setaf
%
Avt100
はかなり古く、マニュアルにはサポートされている色などの素晴らしい内容は記載されていません(明らかにvt100で購入できるフロアマットは他の色で提供されています...)。
答え2
VT100はカラーで作られたことがありません(参照:ncurses FAQ)。したがって、端末記述には対応する機能が不足し、次のように提供されます。ファイルに書き込む、tputはエラーを返します。
1976年にvt100がリリースされたとき、カラーは高価な機能であり、一般端末では使用できませんでした。数年後、色は標準化されました(少なくともECMA-481979年の第2版はこの情報を提供します。最初の版は使用できません。