Windows OS では、color a
またはcolor b
などと入力するだけでcolor c
、ターミナルのフォントの色を一時的に変更できます。
bash ターミナルでこれを行うコマンドはありますか?
永続的な変更はしたくないので、オープンセッションだけで十分です。
答え1
あなたが言及しているのは指示0からf(つまり10進数の0から15)の値を期待します。類似のコマンドはtput
:
tput setaf 10
(「a」は10の16進数)前景色と
tput setab 10
のために背景色。これらは別々です用語情報機能。
この例では、端末の記述に少なくとも16色が含まれていることを前提としています。8色しかない場合はtput
気付かないかもしれませんが、結果は満足のいくものではありません。これは次のように確認できます。
tput colors
デフォルトでは、tput
現在の値を使用して$TERM
端末の説明を選択します。オプションでこれを上書きできます-T
。たとえば、xterm
(「xterm」に設定される他の端末とは対照的に)、このスクリーンショットに示すように端末の説明をTERM
使用できます。xterm-16color
tput
(おそらく、15行目では、何の効果もなかったことがわかるでしょう。これは、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 でのスクリーンショット: