Bashから色を出力しようとすると問題が発生します。

Bashから色を出力しようとすると問題が発生します。

「Hello World」を正しい色で印刷するには、なぜこれらのバックスラッシュが必要なのか、少し混乱しています。

xxx@yyy:/tmp$ echo $Red
\033[0;34m
xxx@yyy:/tmp$ echo $Red
\033[0;31m    xxx@yyy:/tmp$ echo -e "Hello ${Red} World" | sed "s/^/\\\\\\${Blue}/g" | xargs echo -e
Hello  World

その理由は何ですか?元のエコに色を統合する他のより簡単な方法はありますか?テキストファイルをインポートしてコンソールから表示する前に、色を入力するのと同様の作業を行う必要があります。

ありがとう

ベストアンサー1

echoテキスト全体を一度に色付けすることがすべてであれば、カラーコードと出力したいテキストを同じコマンドで組み合わせる必要はありません。

red="$(echo -e "\033[0;31m")"
reset="$(echo -e "\033[0m")"
echo "$red"
echo "This text is red."
echo "$reset"

埋め込まれたカラーコードを再度変更したい場合は、エスケープシーケンス全体を削除する必要はありません。赤いテキストを黄色に変更するには:

echo "$color_festooned_text" | sed 's/;31/;33/g'

おすすめ記事