STDOUTとSTDERRの色をグレーに永久に変更するには?

STDOUTとSTDERRの色をグレーに永久に変更するには?

この質問は次のようになります。 STDERRとSTDOUTを異なる色で印刷するようにシェルを設定できますか?

しかし、私は次のことができるソリューションを探しています。STDOUTとSTDERRを1色に変更。 STDOUTとSTDERRに異なる色を設定したくありません。これは問題があり、上記の回答で述べたように問題を引き起こす可能性があります。

申し訳ありません。私はUnixとLinuxについてはよくわかりません。私.bashrcまたは.bash_profileいくつかの行を追加できるソリューションを探しています。永久的なSTDOUTとSTDERRの色を変更します。

答え1

STDOUTとSTDERRには色がありません。塗りつぶされた部分は端末(エミュレータ)です。一つ前景色(および背景色)を一度に1つずつ設定します。

また、STDOUTとSTDERRは単一ではないことに注意してください。プロセスごと出力ストリーム。すべてのプログラムに適用されるグローバルSTDOUTはありません。これらのストリームは端末にルーティングされますが、プロセスによって異なります。

ターミナルエミュレータには通常、メニューを介してパレットを設定する方法があります。基本的な前景(以下で受信したデータに適用されます。両方STDOUTとSTDERRストリーム)は何でも構いません。あなたも申請できますプロンプトのANSIカラーコードそして色をリセットしない場合\[\033[0m\]最終的には引き続き適用されます。一部のアプリケーションではこれを使用してリセットするため、リセットすると端末のデフォルト設定に戻るため、これは理想的なアプローチではありません。

ターミナルOutlookの設定が望ましくない場合は、プロセスごとにSTDOUT / STDERRをフィルタリングできます。ここにアドバイス

答え2

zsh16色以上をサポートする端末の場合xterm

preexec() printf '\e[90m' # set foreground color to grey before running
                          # the command

precmd() printf '\e[m' # reset the foreground color before issuing the
                       # next prompt.

コマンド自体が端末の前景色を変更できることに注意してください。

答え3

これは問題があるようです。XYの問題- あなたが望む解決策を得るために正しいものを必要としません。

出力は色であり、画面の空白部分は異なる色であるか、文字で埋められていると仮定します。

出力でこれらのケースを見つける方法を考えてみましょう。

一つワイヤーか。空白文字だけで埋められた行? ~と一致する宇宙役割だけ?ラベルを使用しますか?スペースとタブ?タブとスペース?はいすべてが違う

またはあなたが欲しい空行は次のとおりです。-ちょうど空行
この場合、出力ストリームに色を付けたくありません。この回答が適用されます


@StéphaneChazelasのソリューションに似ていますが、「反対」を提供します。

あなたできる、技術的に言えば、STDOUTとSTDERRの色は一行ずつ、正しい色のエスケープコードを追加してください。行の始まりと終わり両方のストリームで。

あなたはする必要があります色のリセットに注意してください少なくともすべての行は、そうでなければ、たとえば色を使用するすべてのプログラムですls端末を台無しにする
あなたが持っている限りコントロールがあまりない出力色を超えているので、頑張りにくいです。

しかし、あなたは制御することができますその他すべて使用された色ですか?
あなたは1つだけ必要この場合の色は?すごい!

端末の基本色の設定STDOUT / STDERR色に変更してから、残りは必要に応じて色を付けます。

あなたはあなたの色を塗ることができますシェルプロンプト- ヒントコードを使用して、他の部分にも色を付けることができます。
正直、これは少しコマンドラインに色を付けるのは難しいです。、ここでコマンドを編集できますが、確かに可能です。でもbash使えるなら試してはいけないzsh、ようにプロンプト処理コードたくさんより柔軟ですそこ - それはあなたが必要とするものです。

ターミナルのデフォルトの前景色をグレーに設定し、背景色も可能にします。しかし、透明/未定義のままにしておいてください。

コマンドラインの背景色を設定するには、次の例を確認してください。 プロンプトのテーマを変更すると、zshはコマンドラインの背景色を変更します。:

PROMPT="%{$bg[cyan]%}%{$fg[red]%}%n%{$reset_color%}%{$bg[cyan]%}@%{$fg[red]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%{$bg[cyan]%}%% "

シェルプロンプトの例

(難しい部分は、各ケースで未使用のリーンの端を正しく処理することです。)

関連情報