
たとえば、太字の緑のプレフィックスが必要な場合は、 としますGreen=$(tput bold; tput setaf 2)
。これにより、$Green が "\E[1m\E[32m" に設定されます。ただし、Ansi 端末では、"\E[1;32m" にすることも簡単にできます。
これは tput で実行できますか、それとも要求しすぎでしょうか?
答え1
いいえ、tput は (通常) これを行いません。なぜなら、その組み合わせを持たない定義済み/標準の端末機能のみを使用する可能性が高いためです。
ncurses を使用すると、ユーザー定義の機能を使用して独自の端末記述を定義でき、tput はそれを使用して動作します。
色を組み合わせると次のようになります。
infocmp -x >foo
printf '\tfgbg=\\E[3%p1%;4%p2%dm,\n' >>foo
sudo tic -x foo
次に(この例は8色の場合)
tput fgbg 4 0
前景を青、背景を黒に設定します。ただし、可能性は多数あります。定義済みの機能を使用すると、手間がかかりません。
答え2
これを別の視点から見ると、できるこのように制御シーケンスを組み合わせるのは、端末ファミリ固有のものであり、termcap/terminfo モデルではありません。制御シーケンスの 44 年前の ECMA-48 モデルは現在広く普及していますが、termcap/terminfo は、それに準拠していない端末タイプも考慮して設計されています。実際には、常にこのように制御シーケンスを組み合わせることができるわけではありません。