\ eと^ [の違い


15

ジルは書いた

文字27 = 033 = 0x1b = ^[=\e

デミゼイは書いた

^ [はESCAPEの単なる表現であり、\ eは実際のESCAPE文字として解釈されます

次に、TechRepublicの記事からこの行を見つけました

キーシーケンスを^ [[24〜ではなく\ e [24〜として記述してください。これは、^ [シーケンスがシェルの\ eで表される[Esc]キーと同等であるためです。したがって、たとえば、キーシーケンスが^ [[OPの場合、使用するバインドコードは\ e [OPになります。

しかし、私は\ eの代わりに^ [を使用するマッピングを使用しています。

それで、それらは交換可能ですか?いつ他方を使用する必要がありますか?

回答:


16

ANSI ASCII規格を見ると、文字セットの下部(最初の32)は予約済みの「制御文字」です(「エスケープシーケンス」と呼ばれることもあります)。これらは、NULキャラクター、ライフフィード、キャリッジリターン、タブ、ベルなどのようなものです。大部分は、Ctrlキーを別のキーと組み合わせて押すことでエミュレートできます。

27番目(10進数)または\0338進数のシーケンス、または0x1b16進数のシーケンス、エスケープシーケンスです。それらはすべて同じ制御シーケンスの表現です。異なるシェル、言語、およびツールは、このシーケンスを異なる方法で参照します。そのCtrl配列がさCtrl- [、従って時々として表され^[^のための短い手ですCtrl

Ctrl-で続行することにより、コマンド行で制御文字シーケンスを生のシーケンスとして入力できますvCtrl- vほとんどのシェルおよびプログラムでは、次のキーシーケンスの解釈を停止し、代わりに未加工の形式で挿入します。あなたはどちらかでこれを行う場合はEscape、キーまたはCtrl- vそれはのようにほとんどのシェルに表示されます^[。ただし、このシーケンスは解釈されますが、カットアンドペーストは簡単ではなく、特定のプロトコルまたはプログラムで遭遇すると、非制御文字シーケンスに縮小される場合があります。

これを回避して使いやすくするために、特定のユーティリティは\033(8進参照による)、16進参照\x1bによる、または特殊文字参照による「生」シーケンスを表します\e。これは、多くの方法で同様である\tと解釈されてTabも介して入力することができる方法によって- - Ctrliまたは\n改行又はEnterも介して入力することができるキー、Ctrl- m

ジルが言うとき:

27 = 033 = 0x1b = ^ [= \ e

彼は10進数のASCII 27、8進数の33、16進数の1b、と言っていますCtrl- [そして\e、すべて等しいということは、それらがすべて同じものを(意味的に)参照していることを意味します。

デミゼイが言うとき

^ [はESCAPEの単なる表現であり、\ eは実際のESCAPE文字として解釈されます

彼は意味的に意味していますが、押すとCtrl- v Ctrl- [これは正確に同じである\e生挿入された配列が最も可能性が高いと同じように扱われます、が、これは必ずしも保証されていない、そしてそれは、プログラムの移植性を使用することを推奨して\e0x1bまたは\033依存使用されている言語/シェル/ユーティリティ。


4

これらはすべて、一部のソフトウェアまたは一部の人間が使用するキャラクターの表現です。最も一般的なものをリストしました。あなたが人間と話しているなら、彼らが理解できるものなら何でも使ってください。(明らかに、これらの少なくとも1つを理解することを確認する私の試みは裏目に出ています。)ソフトウェアと話している場合は、ドキュメントを参照して、それが何を理解しているかを確認してください。

bashで、エスケープシーケンス\e\033および\x1bへの引数としての仕事printfでは、$'…'プロンプトで、およびキーバインディングインチ キーバインディングには、\C-[文字27がCtrl+の入力から得られるものであるため、より一般的な構文が機能します[(この構文はEmacsキーバインディングの模倣です)。\033の引数としてすべてのシェルで動作しprintfます; 他のコンテキストと表記法はシェルに依存しています。

Screenはこれらのエスケープシーケンスを認識しませんが^、制御プレフィックスとして認識^[するため、文字27を意味します。

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