\eと^[の違い

\eと^[の違い

ザイルズ書いた:

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

デミジェイ書いた:

^[ は ESCAPE を表現しただけであり、 \e は実際の ESCAPE 文字として解釈されます。

それからこの行も見つかりました。科学技術共和国の記事

キーシーケンスを ^[[24~ ではなく \e[24~] で記述する必要があります。これは、^[シーケンスがシェルの\ eとして表示される[Esc]キーと同じであるためです。たとえば、キーシーケンスが ^[[OP の場合、使用する結果バインディングコードは \e[OP] です。

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

では、互いを変えて使えますか?いつ他のものを使うべきですか?

答え1

見たらANSI ASCII規格、文字セットの下部(最初の32文字)は、「制御文字」(時には「エスケープシーケンス」とも呼ばれる)として予約されています。 NUL文字、ライフフィード、キャリッジリターン、タップ、ベルなどがあります。ほとんどはCtrl他のキーと一緒にそのキーを押してシミュレートできます。

27番目(10進数)または\0338進数シーケンスまたは0x1b16進数シーケンスはい脱出シーケンス。これらはすべて同じ制御順序を表します。さまざまなシェル、言語、およびツールは、この順序をさまざまな方法で参照します。そのCtrl順序はCtrl-[なので、時々^[^略語で表現されますCtrl

コマンドラインで-を使用して、Ctrl一連の制御文字を生のシーケンスとして入力できますvCtrl-vほとんどのシェルとプログラムの場合は、次のキーシーケンスの解釈を停止し、raw形式で挿入してください。Escapeキーを使ってCtrlこれを行うと、vほとんどのシェルのように見えます^[。ただし、このシーケンスは解釈されますが、簡単に切り取って貼り付けることはできず、特定のプロトコルやプログラムに触れると、非制御文字シーケンスに縮小することができます。

この問題を解決して使いやすくするために、一部のユーティリティでは\033(8進参照を介して)、16進参照\x1bまたは特殊文字参照を使用して「生」シーケンスを表します\e。これは\t- とほぼ同じ方法で解釈されます。ちなみにTab-Ctrlを使って入力することもi\n改行文字やキー(-を使って入力することもできますEnter)と解釈することもできます。Ctrlm

だからGilesはこう言いました。

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

彼はASCII 10進数27、8進数33、16進数1bについて話しています。Ctrlすべて同じで[あり、\e意味上すべて同じを参照するという意味です。

ダメージが言ったとき

^[ は ESCAPE を表現しただけであり、 \e は実際の ESCAPE 文字として解釈されます。

Ctrl意味論的には意味がありますが、 - を押すと元の挿入順序が同じ方法で処理される可能性が高くなりますが、これは必ずしも保証されるわけではないので、プログラム的に移植性が高い、または次のようなv Ctrl方法[を使用することをお勧めします。使用される言語/シェル/ユーティリティ。\e\e0x1b\033

答え2

これらはすべて、特定の人が使用する特定のソフトウェアまたは役割を表します。最も一般的なものをリストしてみました。誰かと話すとき、彼らが理解できるものは何でも使用してください。 (明らかに、これらのうちの少なくとも1つを理解しているかどうかを確認しようとすると逆の効果がありました。)ソフトウェアと話す場合は、マニュアルを確認してソフトウェアが何を理解しているかを確認してください。

Bashでは、エスケープシーケンス、および\eプロンプト\033とキーバインディングの引数として使用されます\x1b。キーバインディングでは、文字27は+を入力して得られるため、より一般的な構文を使用できます(構文はEmacsキーバインディングをモデルにします)。 ;引数はすべてのシェルに適用されます。他のコンテキストとシンボルはシェルによって異なります。printf$'…'\C-[Ctrl[\033printf

Screenはこれらのエスケープシーケンスを認識しませんが、それを^制御接頭辞として認識するため、^[文字27を表します。

関連情報