tput は複合機能で使用できますか?

tput は複合機能で使用できますか?

たとえば、太字の緑のプレフィックスが必要な場合は、 とします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 は、それに準拠していない端末タイプも考慮して設計されています。実際には、常にこのように制御シーケンスを組み合わせることができるわけではありません。

関連情報