エコを使ってカラーテキストを印刷する

エコを使ってカラーテキストを印刷する

たとえば、赤などのカラーテキストを印刷するためにエコーを使用する場合、コードは次のようになります。echo -e "\e[1;31m This is red text \e[0m"
この例では、31は赤のコードであり、他の色の数は次のとおりです。

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

背景色の場合、数字は40〜47です。

私の質問は:ここで正確に何を意味し\e(31以降)は何を意味しますか?マニュアルページで\ eが脱出口であることを読みましたが、それが何を意味するのか理解していません。[m

答え1

「シーケンス要素」の一部です。ANSIエスケープシーケンスまた〜として知られていますECMA-48CSIシーケンスは1976年に初めて採用されました。

[具体的には制御シーケンスインポーター'

タイプman console_codesコードと一部の文書は、ほぼすべての* nixディストリビューションで見ることができます。

答え2

正確に言えば、カラーコードは次のように定義されます。

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

したがって、基本的に、これは異なる端末がカラーコードを解釈し、これらの要素内のテキストにタイトルを追加する方法です。これは、端末が何を意味するのかを理解するのを助ける奇妙な方法です(たとえば、16進数または2進数など)。

答え3

良い説明が見つかりましたここ(少なくとも私には大丈夫です。:-))。それがあなたにうまくいくかどうかはわかりません。

まず、コンソールに次のように入力します。

echo "^[[0;31;40mIn Color"

最初の文字はエスケープ文字で、^と[2文字のように見えます。これを印刷するには、CTRL + Vを押してからESCキーを押す必要があります。他のすべての文字は通常の印刷可能な文字であるため、色に赤い文字列が表示されます。次のように入力して復元するまで、タイプはその色を保持します。

端末でカラーモードを設定するために使用されるエスケープコードです。普通の文字で印刷するとこんな感じです。

答え4

\eEscape Characterの略語です。 the<ESC>[とtheは、mANSI端末制御シーケンスのサブセットであるANSIカラー制御シーケンスの開始タグと終了タグです。ほとんどは数字で始まり<ESC>[、その後に実装される機能を表す文字が続きます(たとえば、カーソルを行に移動、行の最後まで消去、カーソルを保存した位置に戻すなど)。

関連情報