色付けを行うプログラムに出力を渡すことができます。例えば pycolor
のようなプログラムがあります :
pycolor module.py
自分で作成するには:
red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"
カラー出力の詳細。
あまり;特定のプログラムの出力の色は、端末ではなくコマンドによって制御されます。
とはいえ、端末が色の ANSI エスケープ コードを理解すると仮定すると (ほとんどの場合)、エスケープ コードを使用して、プロンプトの最初に目的のプロンプトの色を設定し、最後に目的の出力色を設定できます。これにより、コマンドラインも出力に設定した色になりますが、おそらく探しているものに近い色になります。たとえば、次のようになります:
$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '
次のようなプロンプトが表示されます:
[email protected]:wd $ _
'user' と 'host' は紫色、'wd' (あなたの cwd) は茶色 (濃い黄色) で、'$' の後のすべては端末が水色に使用するものです。 (デフォルトの xterm はこれをシアンでレンダリングします。gnome-terminal はデフォルトでコーンフラワー ブルーのかなり良い色合いになっているようです。)
bash に必要な形式で指定されている実際のカラー コードは、たとえば \[\033[00;35m\]
です。 、ここで 00;35
は実際の色の仕様です。先頭の 00
ほとんど変更されませんが、IIRC の太字 (01)、下線 (??)、および反転ビデオ (??) 効果を生成できますが、末尾の '35' は実際の色であり、この場合は紫です。
ANSI カラー コードの適切なリストを見つけるのは驚くほど困難ですが、次のように、前景色は 30 から 37 まで、背景色は 40 から 47 までです:
color fg bg
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
purple 35 45
cyan 36 46
gray/white 37 47
プロンプトに続くすべてのものにデフォルトの色を設定しているため、エスケープコードを介して独自の色を設定しない実行プログラムはその色を使用することに注意してください。 pager を使用すると、他のコマンドに設定したのと同じ色で出力が表示される可能性があります。一方、実行するコマンド エスケープ コードを介して独自の色を設定すると、あなたの努力は完全に無視されます。
はい、少なくとも Linux と Mac OS の bash で動作します。
最初に、いくつかの属性変数を設定し、PS1 プロンプトでターミナルを目的のコマンドライン属性で設定したままにします。例:
bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"
次に、すべてのコマンドの直前に実行される bash DEBUG トラップを使用して、コマンド出力のテキスト属性を変更します。
trap 'echo -ne "${none}"' DEBUG