端末で許可されている256色のいずれかを使用してテキストを印刷するにはどうすればよいですか?

端末で許可されている256色のいずれかを使用してテキストを印刷するにはどうすればよいですか?

私はLinuxターミナルの256のテキストカラーをすべて活用するプログラムを書くのが好きです。しかし、これまで「\033[1;NUMmNUM\033[1;m」)形式のカラーコードをいくつか見つけました。ただし、これらのエスケープコードは20〜30色のみを受け入れます。いいえLinux端末では256を許可する必要があります。自分のアプリケーションに異なる色を表示するにはどうすればよいですかcurses

答え1

設定で確認できますTERM。以下に設定される可能性があります。有能なひも。色をテストするには、GNUを実行できます。msgcat。たとえば、次のようになります。

echo $TERM
msgcat --color=test
TERM=xterm-256color
msgcat --color=test

または使用@イグナシオバスケス - アブラムスmsgcatの代わりにループを実行してください。

詳しくはどのようにたとえば、何を設定するのか見てみましょう。

答え2

エスケープコードの使用を中止し、setafterminfo機能を使用してください。

$ for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; tput setaf 15 ; echo

答え3

TERMtput端末がサポートする色の数と、前景(setaf)と背景()を設定する方法を教えてください(および端末データベースを使用する他のアプリケーション)。setab

サンプルスクリプトは終了しますが、正しくリセットされません。

for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; echo ; tput op

以下は、説明するためのxtermのスクリーンショットです。

tputと256colorsの例

とにかくmsgcat、ターミナルデータベースを使用しますが、ターミナルのカラー機能についてハードコードされた仮定をします。これらの一部は再検討する必要があります。例えば、コーディングエラーが記録される。この行:

               (strlen (term) >= 4 && memcmp (term, "rxvt", 7) == 0)

関連情報