web-dev-qa-db-ja.com

Windowsの「カラーa」、「カラーb」はbashターミナルで同等

Windows OSでは、color aまたはcolor bまたはcolor cなどを使用して、端末のフォントの色を一時的に変更します。

これをbashターミナルで行うコマンドはありますか?

永続的な変更はしたくないので、オープンセッションで十分です。

2
muyustan

コマンド を参照していますが、これは値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ターミナルの説明を使用できます。

enter image description here

(おそらく、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のスクリーンショット:

enter image description here

6
Thomas Dickey