これは ~/.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つの部分で構成されています:
- ㅏ制御シーケンスインポーター(CSI)文字、現代用語ではU+009F、1970年代標準では9/15
- 0以上パラメータ文字、U+0030〜U+003Fの範囲から取得
- 0以上中間文字、U+0020〜U+002Fの範囲から取得
- シングル最終的な役割、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ビットエンコーディング。
したがって、特定の制御順序を分析すると、次のようになります。
\033[
— エンコード、CSI 文字の 7 ビットエンコーディング追加エンコーディングBourne Againシェルで処理されるCスタイルエスケープシーケンス01;32
— 5 つのパラメータ文字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」を名前で乱用する悪い習慣に陥らないでください。
追加読書
- 文字コード構造と拡張技術 。 ECMA-35。 6版。 1994. ECMAインターナショナル。
- 文字セットエンコーディングのための制御機能。 ECMA-48。 5版。 1991. ECMAインターナショナル。
- https://unix.stackexchange.com/a/197291/5132
答え2
調査結果によると、
\033[01;32m
- 部分ANSIエスケープコードどれが属するのか\033[01;32m
というグラフィックレンダリング(SGI)端末出力順序の選択(その中にコードがありますCSI n m
。)\033[
- は制御シーケンスインポーター01
— 「大胆または強い強度」のコードです。;
— 区切り記号です。パスワード。私たちはいくらでも持つことができますパスワード私達が望んだように。そのような人のためのテーブルがあります。パスワードWikipediaページの内容ANSIエスケープコード存在するグラフィックレンダリング(SGR)パラメータの選択。32
フォアグラウンドグリーンテキストのコード。m
シーケンス全体をCSI n m
SGIシーケンスとして表示します。