GNU/Linux >> Linux の 問題 >  >> Linux

コマンドと出力の異なる色

色付けを行うプログラムに出力を渡すことができます。例えば ​​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

Linux
  1. Cdへの入力に使用されるコマンドの出力はどれですか?

  2. PS コマンドの完全な出力の表示

  3. 出力を文字列に変換する

  1. 初心者と専門家のための10のLinuxコマンドチュートリアル

  2. 初心者向けのLinuxpinkyコマンドチュートリアル(8例)

  3. root ユーザーと非 root ユーザーの異なるシェル

  1. $ _対!$。前のコマンドと出力リダイレクトの最後の引数?

  2. コマンド出力をファイルと端末にリダイレクト

  3. ターミナルで現在の日付と時刻を取得し、ターミナルでカスタム コマンドを設定するにはどうすればよいですか?