bash エコカラーをテキストファイルとして[閉じる]

bash エコカラーをテキストファイルとして[閉じる]

Bashを使ってカラーテキストを書くには?

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' 
greprc=$?
if [[ $greprc -eq 0 ]] ; then
 echo -e "${GREEN} converged${NC}" >>log
else
  echo -e "${RED} not converged${NC}" >>log
fi

端末にのみメッセージが表示されたら、テキストに色を割り当てます。ただし、ファイル(通常のテキスト)に書き込むと、logファイルのテキストに色は割り当てられません。ログにカラーテキストを書き込むには?

答え1

cat以下はカラーファイルのコピー/貼り付け出力です。

[36m 
hello36
[35m 
hello35
[37m 
hello end

上記は、表示が難しく入力しにくいというESCの特別な意味を説明するためのものです。 Stackexchangeの編集ウィンドウに[ESC]のような小さなアイコンが表示されます。

に変更cat -A colorhello > col.txt:

^[[36m $
hello36$
^[[35m $
hello35$
^[[37m $
hello end$
$
$

(明らかに最後に空白行が2つあります)(別のFirefoxタブで開いたcol.txtからコピーしました)

vimでは、エスケープ文字は濃い青で「^[」と表示されます。 1 つを挿入するには: ctrl-v [ESC]。

viでESCカーソル^[を「^」に移動しようとすると、画面が一度点滅します。

もちろん、答えが指摘したように、これは基本的な「リッチテキスト」形式です。これらのエスケープ文字と制御シーケンスがあり、おそらく灰色のテキストよりも迷惑になるでしょう。

(ファイルプロンプトとカーソルに色を付けると、ファイル内のカーソルを変更するために使用されるANSI制御シーケンス(ESC [? 1; 2; 3c)がvimrc適用されることがわかりました)cat

もちろんcat色を確認する必要があります。色は端末によって解釈されます。エディタでは意味がありません。そして、制御シーケンスの構文の強調が膨大な時間投資になるとは思わない。


追加: 他の方法ではできません。 ESCシーケンスの代わりに短い魔法の文字列を挿入すると、1行ずつ簡単に強調表示できます。 dmesgは括弧内にタイムスタンプがあるようです。

[info] Yor first logline...in normal color
[info] Another normal line
[warn] This could appear yellow in your editor
[error] This sticks out red and sticks also out b/w
[info] And so on

これにより、必要に応じて色と色の意味を確認できます。(「ああ、このメッセージはあまりにも明るい赤いので重要ではないと思いました」 :-)最初に捕まったときの姿はまだ美しいです。

(過度の構文ファイルをすべて閉じると、vimの構文の強調表示は素晴らしいです!)

関連情報