エコーを使用して色付きのテキストを印刷する

エコーを使用して色付きのテキストを印刷する場合、たとえば赤色の場合、コードは次のようになります。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はエスケープであると読みましたが、それが何を意味するのかわかりませんでした。

コメント

  • In一般に、現在の技術コンテキストで特別な意味を持つ文字はエスケープします。たとえば、文字列は引用符で囲まれていることがよくあります。"このように"。ただし、文字列内に引用符が必要な場合は、これらの文字をエスケープして、区切り文字としてではなく文字どおりに解釈されるようにする必要があります。たとえば、echo "She said \"Hi\""この場合(質問)、'より良い回答を待つ必要があります。
  • hermannn.com/programs/terminal_fonts

回答

これらは、 ANSIエスケープシーケンス ECMA-48 CSIシーケンスとも呼ばれます。1976年に最初に採用されました

より具体的には

は “制御シーケンスイントロデューサー

タイプ man console_codes ほとんどすべての* nixディストリビューションで、コードといくつかのドキュメントを確認できます。

コメント

  • man 4 console_codeではなくman console_code:私のubuntuで
  • マニュアルページ名は<で終わりますdiv id = "0002c3f916">

s " so " man console_codes "正しいページが表示されるはずです。

回答

正確には、カラーコードは次のように定義されています-

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

つまり、基本的には、さまざまな端末がカラーコードを解釈し、これらの要素内でテキストにキャプションを付ける方法です。ターミナルに意味を理解させる奇妙な方法(HexCodesやBinaryなど)

回答

私は良い説明ここ(少なくとも、私にとってはいい 🙂 )。役立つかどうかわかりません。

開始するには、コンソールで次のように入力します。

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

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

これらは、ターミナルでカラーモードを設定するためのエスケープコードです。通常の文字で印刷すると、そのように見えます。

回答

\eはエスケープ文字の省略形です。 <ESC>[mは、シーケンスされたANSI端末制御のサブセットであるANSIカラー制御シーケンスの開始と終了のマーカーです。 。それらのほとんどは、<ESC>[で始まり、数字、実装されている機能を示す文字が続きます(たとえば、カーソルを行に移動、行の終わりにクリア、カーソルを保存に戻す)場所など)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です