端末でテキストの色を再マッピングする方法

端末でテキストの色を再マッピングする方法

私が使用している端末には白/明るい背景がありますが、私が使用しているコマンドの出力には白いテキストが含まれています(例:前景色=白)。すべての白い前景を黒い前景にマップし、他の色を変更せずに維持する方法(シェルスクリプトを使用するなど)はありますか?

答え1

your_script | perl -pe 's/\e\[((?:0;)?)97m/\e[${1}30m/'

上記のPerlコードにスクリプト出力を入力すると、エスケープされたすべての色シーケンスが白い前景=>黒fgに変換されます。

答え2

端末の正確な機能は、バージョンと実装によって異なります。既存の端末の中には個々のウィンドウのカスタマイズ機能がほとんどありませんが、多くのデスクトップオペレーティングシステムにはデフォルト設定を開いて個々のウィンドウの色を自由に調整できる美しい端末があります。

迅速で汚れた解決策としてマウスでテキストを選択すると、他のカラーパレットが適用され、役に立つことがよくあります。それ以外の場合は、通常、テキストを目的の色で別のウィンドウに貼り付ける小さな追加手順です。

答え3

端末によって異なります。 xterm では、次を使用してカラー番号とカラー名のマッピングを変更できます。エスケープシーケンス OSC 4 ; NUMBER ; NAME BEL。明示的な白はカラー7なので、次のようになります。

printf '\e]4;7;black\a'

これは、背景または前景として使用される色に影響を与えます。これはレンダリング設定です。つまり、過去と将来のすべての出力に影響を与えます。

これをサポートする他の端末はほとんどありません。

関連情報