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


25

エコー、たとえば赤色を使用して色付きのテキストを印刷する場合、コードは次の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

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

何をん:私の質問はこれです\e[し、m(31の後に)正確にここに意味ですか?
\ eはエスケープであるとマニュアルページで読みましたが、それが何を意味するのか理解できませんでした。


一般に、現在の技術的な文脈で特別な意味を持つ文字をエスケープします。たとえば、文字列は「このように」引用符で囲まれていることがよくあります。ただし、文字列内に引用符が必要な場合は、これらの文字をエスケープして、区切り文字としてではなく文字どおりに解釈されるようにする必要があります。たとえばecho "She said \"Hi\""、この場合(あなたの質問)については、より良い回答を待つ必要があります。
エマニュエルベルク

回答:


13

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

より具体的に[は、「Control Sequence Introducer」です

man console_codesほとんどすべての* nixディストリビューションを入力して、コードといくつかのドキュメントを表示します。


man 4 console_codenot man console_code:私のubuntuで
-0x6773

マニュアルページ名は「s」で終わるため、「man console_codes」で正しいページが表示されます。
ミッコランタライネン

4

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

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

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

したがって、基本的には、異なる端末が色コードを解釈する方法であり、これらの要素内にテキストをキャプションします。端末にあなたの意味を理解させる奇妙な方法(HexCodesやBinaryなど)


2

ここでいい説明を見つけました(少なくとも、私にとってはいいです:-))。役に立つかどうかはわかりません。

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

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

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

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


2

\eエスケープ文字の省略形です。<ESC>[そしてm配列決定ANSI端末制御のサブセットであるANSIカラー制御配列の最初と最後のマーカーです。それらのほとんどはで始まり<ESC>[、その後に数字が続き、どの機能が実装されているかを示す文字が続きます(例:カーソルを行に移動、行末までクリア、保存場所にカーソルを戻すなど)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.