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の構文の強調表示は素晴らしいです!)