エコーを使用して色付きのテキスト、たとえば赤い色を印刷する場合、コードは次のとおりです: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
および[
およびm
(31以降)はここで正確に何を意味しますか?
manページで\ eがエスケープであると読みましたが、それが何を意味するのか理解できませんでした。
これらは ANSIエスケープシーケンス としても知られる「シーケンスエレメント」の一部です ECMA-48 としても知られています1976年に最初に採用されたCSIシーケンス
より具体的には、[
は ' Control Sequence Introducer 'です
タイプ man console_codes
ほとんどすべての* nixディストリビューションで、コードといくつかのドキュメントを参照してください。
正確にはカラーコードは以下のように定義されています-
Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"
Closing = "\033[m" or "\e[0m"
したがって、基本的には、さまざまな端末がカラーコードを解釈する方法と、これらの要素内のテキストにキャプションを付けます。端末があなたの意味を理解するための奇妙な方法(HexCodesやBinaryなど)。
\e
は、エスケープ文字の省略形です。 <ESC>[
およびm
は、ANSI端末制御シーケンスのサブセットであるANSIカラー制御シーケンスの開始と終了のマーカーです。それらのほとんどは<ESC>[
で始まり、その後に数字、その後に実装されている機能を示す文字が続きます(例:カーソルを行に移動、行の終わりまでクリア、カーソルを保存された場所に戻す、など)。
私はニースの説明を見つけました ここ (少なくとも、私にとってニース:-))。それがあなたに役立つかどうかはわかりません。
開始するには、コンソールで次のように入力します。
echo "^[[0;31;40mIn Color"
最初の文字はエスケープ文字で、^と[の2文字のように見えます。これを印刷できるようにするには、CTRL + Vを押してからESCキーを押す必要があります。他のすべての文字は通常の印刷可能な文字であるため、文字列In Colorが赤で表示されます。タイプは、次のように入力して戻るまでその色のままです。
それらは端末のカラーモードを設定するためのエスケープコードです。通常の文字で印刷すると、そのようになります。