コンピューティングにおいて、エスケープシーケンスとは、シーケンスの残りのテキストの構文に加えてエスケープ文字の接頭辞を指定する確立された規則に基づいて特別な意味を持つ文字のシーケンスです。 [ 1 ] [ 2 ]規則では、任意の特定の文字コードをシーケンスの接頭辞として定義できます。規則によっては、バックスラッシュ(\)やアンパサンド(&)などの通常の印刷可能な文字を使用するものもあります。また、 ASCIIエスケープなどの印刷不可能な(別名制御)文字を使用するものもあります。
エスケープシーケンスの一般的な用途は、制御文字をデータストリームから削除して、誤って制御機能を引き起こさないようにすることです。制御文字はエスケープ文字と、それに続く1つ以上の文字に置き換えられます。制御文字がアクションを引き起こすはずだった通常のコンテキストからエスケープした後、シーケンスは削除された文字に置き換えられます。[ 6 ]エスケープ文字自体を送信するには、2つのコピーが送信されます。[ 7 ]
エスケープシーケンスは、文字リテラルや文字列リテラルで、印刷できない文字や、文字や文字列の構文と衝突する文字を表現するためによく使用されます。たとえば、制御文字はソースファイルで許可されていない場合や、コマンドに入力すると望ましくない副作用を引き起こす場合があります。
C 言語および C 言語の影響を受けた多くのプログラミング言語の特徴として、このようなテキスト リテラル内のエスケープ シーケンスの開始はバックスラッシュ( \) でマークされます。[ 8 ] [ 9 ]これらのC スタイルのエスケープ シーケンス\rの一般的な例としては、キャリッジ リターン、改行、タブ文字を表す、 、\nがあります。印刷可能な文字をエスケープに使用すると、その文字が通常の意味を失うという事実を考慮するために、単一のバックスラッシュを表すために 2 つのバックスラッシュ文字 ( ) のシーケンスが提供されています。また、任意の文字をASCIIコード値で表すエスケープ シーケンスもあります。たとえば、バックスラッシュは または のいずれかで表すことができ、それぞれ16 進数と8 進数の表記で文字コード値を指定します。同様に、小文字のe は、数字の 7 は で表すことができます。\t\\\x5c\134\145\067
バックスラッシュの直後に改行(文字列リテラルの外にあるのは必須)が続く場合、それはエスケープシーケンスを示すものではありません。むしろ、「改行を無視する」という意味だと考えることができます。Cプリプロセッサは、その行を次の行と結合します。[ 10 ]
文字列リテラル内でエスケープ文字が必要な場合、一般的には2つの方法があります。
'He didn''t do it.') [ 7 ]echo Cut^&Pasteアンパサンド演算子をキャレット(^)でエスケープすることにより、「Cut&Paste」を出力します[ 6 ]。C 言語や多くの関連言語では、エスケープ文字はバックスラッシュ ( \) です。シングルクォーテーションマーク文字は とコード化できます。'\''は'''無効です。文字列リテラルはダブルクォート ( ) で囲まれているため、エスケープ ( ) するか、ダブルクォート文字のコードを指定するシーケンス ( ) を使用"しない限り、内容にダブルクォートを含めることはできません。"\""\x22
「ナンシーは群衆に向かって「ハローワールド! 」と言いました。」と印刷します。これは、バックスラッシュを挿入してエスケープすることで修正できます。
「ナンシーは群衆に向かって「こんにちは、世界!」と言いました。」と印刷します。あるいは、次の例では「\x」を使用して、後続の 2 文字が 16 進数であることを示します。「22」は二重引用符の 16 進 ASCII 値です。
「ナンシーは群衆に向かって『こんにちは、世界!』と言いました。」と印刷します。C、C++、Java、Rubyでは、同じ2種類のバックスラッシュエスケープスタイルが使用できます。PostScriptとリッチテキスト形式(RTF)でもバックスラッシュエスケープが使用されます。quoted -printableエンコーディングでは、等号がエスケープ文字として使用されます。URLとURIでは、非ASCII文字などの特別な意味を持つ文字を引用符で囲むためにパーセントエンコーディングが使用されます。
VT52端末は、エスケープ文字「A」のような単純な二文字コマンドを使用していた。エスケープ文字の接頭辞がない場合、A単に文字「」を意味したAが、エスケープシーケンスの一部としてescape-A使用されると、異なる意味を持った。VT52はパラメータもサポートしていた。これは、置換としてエンコードされた単純な制御言語ではなかった。
後期のVT100端末では、カーソル移動、文字セット、表示機能などの制御に、より高度なANSIエスケープシーケンス規格(現在はECMA-48)が採用されました。HP 2640シリーズは、ブロックモードと文字モード、プログラミングキーとそのソフトラベル、グラフィックベクター、さらにはテープやディスクファイルへのデータ保存など、おそらく最も精巧なエスケープシーケンスを備えていました。
Windows (およびMS-DOS )では、 ANSI エスケープ シーケンスのサポートを有効にするためにユーティリティ ANSI.SYS [ 11 ]を使用できます。DOS ではPROMPTコマンドを介して、16 ビット Windows ではコマンド ウィンドウを介して有効にします。Unix および Unix ライクなシステムでは、 ANSIエスケープシーケンスは一般的にシェルによってサポートされています。GUI アプリケーションの台頭によりエスケープシーケンスの使用は減少しましたが、全画面のテキスト ベースのアプリケーションを提供する機能は依然として利用可能です。$e
制御シーケンスとは、文字が表す通常の情報を伝える代わりに、コンピュータ周辺機器の状態を変更する文字のシーケンスです。ANSIエスケープシーケンスでは、制御シーケンス導入子と呼ばれるエスケープシーケンスの接頭辞は、ASCII ESC(10進数27)に続くか、CSI(10進数155)のいずれかになります。制御シーケンスにエスケープ文字を使用しない注目すべきシステムには、次のものがあります。[
+++。シーケンスがコンテンツに埋め込まれるのではなく制御シーケンスとして解釈されるようにするため、送信者は の送信前と送信後に1秒間通信を停止します+++。モデムが 状態を検出すると、通常モード(電話に文字を送信)から、データがコマンドとして解釈されるコマンドモードに切り替わります。Oコマンドを送信すると、通常モードに戻ります。[ 12 ] [ 13 ] [ 14 ] [ 15 ]通信におけるエスケープシーケンスは、コンピュータと周辺機器が情報を送受信するための単一のチャネルしか持たない場合によく使用されます(したがって、エスケープシーケンスはインバンドシグナリングの一例です)。[ 19 ] [ 20 ]これらは、ほとんどのダム端末が通信に7データビットのASCIIを使用していたときに一般的であり、7データビットで使用可能な128コードによって制限される「外国語」またはグラフィック文字のために別の文字セットに切り替えるために使用されることもありました。比較的「ダム」な端末でさえ、いくつかのエスケープシーケンスに反応し、初期の機械式テレタイププリンタ(「ガラス製テレタイプ」またはVDUのベースとなったもの)は、文字27と31に反応して文字モードと数字モードを切り替えました。
多くのコンピューターのキーボードにはEscキー(Escはescapeの略)がありますが、通常はエスケープシーケンスを入力するために使用されません。viテキストエディタでは、このキーを使用して入力モードを終了します。[ 21 ]一部のアプリケーションでは、このキーを使用して操作をキャンセルしたり、ネストされたコンテキストのレベルを1つ上に移動したりします。[ 22 ]
1870年にJ.ボードーによって発明され、1874年に特許を取得したボードー符号は[…]
制御文字の要素C0とC1 […] 1874年にジャン=モーリス=エミール・ボードー(1845-1903)によって特許取得された5ビットコード
フィールド内で、連続する 2 つのアポストロフィ […]
バックスラッシュの
後に文字または数字の組み合わせが続く文字の組み合わせを
エスケープシーケンス
と呼びます。
\5.1.1.2 翻訳フェーズ、2.:バックスラッシュ文字()の直後に改行文字が続く場合、その都度削除
し、物理的なソース行を結合して論理的なソース行を形成する。[...]
\+++ - 「エスケープシーケンス」 - このコマンドはエスケープシーケンスを開始し、モデムをオンラインコマンドモードに戻します。
モデムがコマンドモードの場合、モデムはあなたからのコマンドを受け付けることができます。
viコマンド […] Esc(エスケープ)キーを押すと、次の操作ができます […]