シェルスクリプトに色を表示

シェルスクリプトに色を表示

.Xresourcesの色を使わずに端末から色を印刷できますか?たとえば、echo -e "\033[32m Test"「Test」は印刷されますが、その色は.Xresourcesで緑色で定義された色です。つまり、プリセットを再定義せずに#FF0000などの未定義の色を印刷するにはどうすればよいですか?

答え1

ターミナル(シェル)ウィンドウの色はファイルの色と実際には関係ありません.Xresources

端末(シェル)ウィンドウで色を印刷するには、このtputコマンドを真剣に考慮する必要があります。これはterminfo、データベースを使用して色を取得するために必要なエスケープシーケンスを生成します。

man 5 terminfo関連セクションを読むことができますColor Handling。利用可能なカラーテーブルは次のとおりです。

Colour    Value RGB
black     0     0, 0, 0
red       1     max,0,0
green     2     0,max,0
yellow    3     max,max,0
blue      4     0,0,max
magenta   5     max,0,max
cyan      6     0,max,max
white     7     max,max,max

そして、setaf(ANSI前景設定)とsetab(ANSI背景設定)コマンドで設定します。後でsgr0リセットするために使用されます。

例えば

tput setaf 4    # Blue text
tput setab 3    # Yellow background
echo -n "This is blue text on a yellow background"
tput sgr0       # Reset colours
echo 

答え2

一部の端末エミュレータは直接RGB True Colorをサポートしています。バラよりhttps://gist.github.com/XVilka/8346728詳細と使用例をご覧ください。

関連情報