web-dev-qa-db-ja.com

端末でフォントの色を変更するにはどうすればよいですか?

設定でフォントの色を変更する方法は知っていますが、次のようにすべてのテキストの色が変更されます。

what I have

私がしようとしているのは次のようなものです:

what I want

任意のヒント?

4
blazonix

多くのUNIX端末は一部(通常はすべてではない)を認識できます Ansiエスケープコード

したがって、それら(端末で機能するもの)を使用して、必要に応じて表示を変更できます。

非常に単純な例(多くの異なる(そして古い!)シェル間で移植可能であるため、私はprintfを使用しています):

export _norm_="$(printf '\033[0m')" #reset "everything" to normal
export _bold_="$(printf '\033[1m')"   #set bold
export _rred_="$(printf '\033[0;1;5;31m')" #"reverse red"
echo "This is an ${_rred_}ERROR${_norm_} and this is ${_bold_}A WARNING${_norm_}"

端末の種類(TERM = ...)とそのマシンに接続するプログラムによって異なる場合があることに注意してください(特に:F-secureなどの一部のWindows端末を使用すると、リバースが「点滅」になる場合があります。たとえば、PuTTYなど)。

言い換えれば、これは完全に移植可能ではなく、多くのものに依存します。しかし、「太字」は常に機能しています。 「逆」は、端末に依存する傾向があります。

tputは、端末の適切なシーケンスを見つけるために注意を払っているので、使用することをお勧めしますが、常に使用できるとは限りません(たとえば、古いマシンでは使用できません)。

3
Olivier Dulac

Olivier Dulacが言ったように、ANSIエスケープコードが必要です。 Bashのヒント:色とフォーマット を参照してください。

詳細については。

1
where23