追加読書

追加読書

これは ~/.bashrc から来ます。

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

気づく\033[01;32m

私は\033[それが制御シーケンスの紹介者であることを知っています。私は32緑のカラーコードを知っています。

しかし、とは01;何ですかm

どの部分ANSIエスケープコードそれは\033[01;32m属する。

答え1

読まれるべき標準はECMA-35とECMA-48です。 (「ANSI」はおそらく間違った名前です。この場合、「VT100スタイル」も同様です。)制御シーケンス4つの部分で構成されています:

  1. 制御シーケンスインポーター(CSI)文字、現代用語ではU+009F、1970年代標準では9/15
  2. 0以上パラメータ文字、U+0030〜U+003Fの範囲から取得
  3. 0以上中間文字、U+0020〜U+002Fの範囲から取得
  4. シングル最終的な役割、U+0040〜U+007Eの範囲から取得

制御シーケンス導入者はいわゆる範囲にある。C1制御文字、その値の範囲は U+0080 から U+009F までです。

1980年代半ばまで、ターミナルとシリアル通信の世界は、パーソナルコンピュータ、BBS、Fidonetなど、世界の選択圧力のおかげでほぼ完全に8ビットに変わりました。 7ビットが依然としてフィッティングにとって重要な問題であった1970年代、ECMA-38とECMA-45は、値が7ビットに収まらないC1制御文字用の代替7ビットエンコーディングシステムを提供しました。約40年が経過しても、この文字は後で[CSIの7ビットエンコーディングとなったエスケープ文字()にまだ存在します。

すべてのC1スコープには代替7ビットエンコーディングがあることがわかります。また、この事実を知らない人が多いことがわかります。一部のソフトウェアが認識しない実際CSIの役割は制御シーケンスの導入者として機能します。一部のソフトウェアは、すべての7ビットエンコーディングを処理せず、制御シーケンス導入者のエンコーディングのみを処理します。一方、1980年代半ばまで追いついて、実際のC1制御文字を認識するソフトウェアもある。そうでなくても7ビットエンコーディング。

したがって、特定の制御順序を分析すると、次のようになります。

  1. \033[— エンコード、CSI 文字の 7 ビットエンコーディング追加エンコーディングBourne Againシェルで処理されるCスタイルエスケープシーケンス
  2. 01;32— 5 つのパラメータ文字
  3. m——最終キャラクター

中間文字(ない場合もあります)と最後の文字の組み合わせは、制御シーケンスの機能を指定します。ベンダー拡張用に予約された完全なセットを含む、これらの機能はたくさんあります。 (上記の制御シーケンス構造のため、未知のベンダー拡張もストリームで処理/スキップされる可能性があります。)この場合に表示される内容は次のとおりです。グラフィックレンダリング設定(SGR)は標準制御シーケンスの1つです。

パラメータ文字は、セミコロンで区切られた数値パラメータ文字列をデフォルトの10にエンコードします。 (実際には、パラメータ文字列にはより多くの内容を含めることができます。コロンは有効なパラメータ文字です。最終的にその値はU + 003Aです。以降、ITU規格によると、コロンは次のことを示すために使用されます。サブパラメータ。これは実際にはSGRにも当てはまります。同様に、DEC VTは?標準制御シーケンスの特定のDECバリアントの拡張マーカーとしてパラメータ文字U + 003Fを使用します。 )SGRの場合、これらのパラメータは印刷に設定する色と属性を表します(たとえば、「グラフィック」文字の「再現」)。

これらのものがたくさんあり、この特別な場合には次のことを意味します。

  • 01- 太字
  • 32— グリーンビュー

これには、IBM PCのCGAディスプレイシステムと互換性のあるIBM PCを端末として使用する方法についての全体的な余談があります。太字の色の変更などのフォントの重みが発生しましたが、これらの慣習はありがたいことにゆっくりと消えています。 Boldは実際には再びBoldを意味します(CGA以前の時代に意味したように)。この規則によれば、一部(幸いにもますます少ない)端末エミュレータでは、このSGRシーケンスは色#10(明るい緑色)を前景に効果的に設定します。

数年前、AIXterm端末エミュレータでは、9〜15色を前景色と背景色に設定するために、SGR 90〜97および100〜107を導入しました。 16色のルールは今一般化されているだけでなく、256カラーパレットルールはかなり長い間存在してきました。前景色#10を取得するより安定した方法は、SGR 92を使用することです。いいえSGR 1;32。

通常のシェルプロンプトではこれは必要ありません。例:Zシェルを使用すると、特定の制御シーケンスを直接エンコードするのではなく、Cスタイルのエスケープを使用して色とプロパティの変更をエンコードできます。パーセント順PS1さまざまなプロンプトのため、RPROMPTおよび同様のシェル変数に使用されます。 Z シェルは、terminfo データベースで対応する制御シーケンスを探します。したがって、Zシェルの同様のプロンプト文字列は次のようになります。

PS1=%B%F{緑}%n@%m%f%b
または色#10で、太字が本当に欲しくない場合:

PS1=%F{10}%n@%m%f

最後に: これらはいいえ「VT100スタイル」。人々はしばしばVT100を一般化と呼びます。これは間違いです。これは「VT100スタイル」ではなく、ECMA-48制御シーケンスです。初心者にとって重要な事実は、VT100モノクロですそしてマルチカラー機能はありません。 「vt100」または「vt102」を名前で乱用する悪い習慣に陥らないでください。

追加読書

答え2

調査結果によると、

  • \033[01;32m- 部分ANSIエスケープコードどれが属するのか\033[01;32mというグラフィックレンダリング(SGI)端末出力順序の選択(その中にコードがありますCSI n m。)
  • \033[- は制御シーケンスインポーター
  • 01— 「大胆または強い強度」のコードです。
  • ;— 区切り記号です。パスワード。私たちはいくらでも持つことができますパスワード私達が望んだように。そのような人のためのテーブルがあります。パスワードWikipediaページの内容ANSIエスケープコード存在するグラフィックレンダリング(SGR)パラメータの選択
  • 32フォアグラウンドグリーンテキストのコード。
  • mシーケンス全体をCSI n mSGIシーケンスとして表示します。

関連情報