Windows OSでは、color a
またはcolor b
またはcolor c
などを使用して、端末のフォントの色を一時的に変更します。
これをbashターミナルで行うコマンドはありますか?
永続的な変更はしたくないので、オープンセッションで十分です。
コマンド を参照していますが、これは値0〜f(つまり、0〜15の10進数)を期待しています。同様のコマンドは tput
を使用します。
tput setaf 10
( "a"は10の16進数)、foreground色、および
tput setab 10
backgroundの色。それらは別々です terminfo 機能。
この例では、端末の説明が16色以上であることを前提としています。 8個しかない場合、tput
は気づきませんが、結果は満足のいくものではありません。あなたはこれを見ることができます
tput colors
デフォルトでは、tput
は$TERM
の現在の値を使用して端末の説明を選択します。これは-T
オプションで上書きできます。たとえば、xterm
を使用している場合(TERM
を「xterm」に設定する他の端末とは対照的) )、このスクリーンショットに示すように、xterm-16color
ターミナルの説明を使用できます。
(おそらく、15行目のtput
には有効な効果がなかったことがわかります。これは、10
が外にあるため、予想されます8色の範囲)。
xterm
または xterm-16color
(または xterm-256color
)がtput
端末に書き込むことができるエスケープシーケンスの作成方法。 bashプロンプトはエスケープシーケンスも送信し、色を設定またはリセットします。シェルスクリプト内でtput
を呼び出してテキストをエコーすると、同じコマンド(bashプロンプトで区切られている)が同じように動作しない可能性がありますが、色付きのテキストが表示される場合があります。また、一部のプログラム(ls
など)は色を設定/リセットします。これらの異なるアプリケーションと共有する端末のカラー状態は1つだけです。端末は自動的にそれらを切り替えません。
シェルスクリプトのテストは、シェルプロンプトの詳細に依存するよりも予測可能です。ここに例があります
#!/bin/sh
case $TERM in
xterm*)
TERM=xterm-256color
;;
linux*)
TERM=linux-16color
;;
esac
export TERM
for p in $(seq 0 15)
do
tput setab $p
for q in $(seq 0 15)
do
tput setaf $q
printf '%x%x' $p $q
done
tput sgr0
printf '\n'
done
xtermのスクリーンショット: