Ctrl + 4は^ \を送信します
端末はキーではなく文字(より正確にはバイト)を送信します。印刷可能な文字を表すキーが押されると、端末はその文字をアプリケーションに送信します。ほとんどのファンクションキーは、エスケープシーケンスとしてエンコードされます。文字番号27で始まる文字のシーケンスです。Ctrl+ の形式のいくつかのキーコードcharacterといくつかのファンクションキーは、ASCII文字セットで制御文字として送信されます。基礎として使用(Unicode、ISO Latin- nなどはすべてASCIIのスーパーセットです)、33文字は制御文字です:文字番号0〜31および127。制御文字は印刷できませんが、アプリケーションでの効果を意図しています。たとえば、Control-J(一般的に^ Jと表記)である文字10は改行文字であるため、端末がその文字を表示すると、グリフを表示するのではなく、カーソルを次の行に移動します。エスケープ文字自体は制御文字^ [(値27)です。
すべてのCtrl+ characterキーコードをカバーするのに十分な制御文字がありません。文字と文字のみに@[\]^_?
対応する制御文字があります。Ctrl+ 4またはCtrl+ $(これはCtrl+ Shift+ と仮定します)を押す4と、端末は送信するものを選択する必要があります。端末とその構成に応じて、いくつかの一般的な可能性があります。
- 端末はCtrl修飾子を無視し、文字
4
またはを送信します$
。
- 端末は、押された正確なキーと修飾子をエンコードするエスケープシーケンスを送信します。
- 端末は他の制御文字を送信します。
多くの端末は、数字行のいくつかのキーに制御文字を送信します。
- Ctrl+ 2→^ @
- Ctrl+ 3→^ [
- Ctrl+ 4→^ \
- Ctrl+ 5→^]
- Ctrl+ 6→^^
- Ctrl+ 7→^ _
- Ctrl+ 8→^?
この特定の慣習がどこで生じたのかはわかりません。
Ctrl+ |は同じ文字を送信します。これは、Ctrl+ Shift+で\あり、Shiftキーが押されたかどうかにかかわらず、端末は^ \を送信するためです。
^ \終了
端末自体(より正確には、カーネルの汎用端末サポート)は、いくつかの制御文字を特別に解釈します。この解釈は、異なる文字をマッピングするように構成することも、文字を自分で処理したいアプリケーションによってオフにすることもできます。よく知られているこのような解釈の1つはReturn、端末がクックモードで、アプリケーションが行ごとに入力を受け取る場合、キーによって送信される文字^ M は現在の行をアプリケーションに送信することです。
いくつかのキャラクターは、フォアグラウンドでアプリケーションに信号を送信します。^ Cは割り込み信号(SIGINT)を送信します。これは通常、アプリケーションに実行を停止し、ユーザーの次のコマンドを読み取るように指示します。通常、非対話型アプリケーションは終了します。^ \は終了シグナル(SIGQUIT)を送信します。これは通常、何も保存せずにできるだけ早く終了するようにアプリケーションに指示します。多くのアプリケーションは、デフォルトの動作をオーバーライドしません。つまり、アプリケーションをすぐに強制終了します¹。ですから、押したときにCtrl+ 4(または^ \文字を送るもの)にcat
またはbc
、デフォルトの動作を上書きどちらも、アプリケーションが殺されています。
端末自体^\
がメッセージの一部を印刷します。入力した文字の視覚的な描写であり、端末はクックモードでエコーがオンになっています(文字は、入力するとすぐに端末によって表示されます文字がアプリケーションにのみ送信される非エコーモード。文字を表示することを選択する場合としない場合があります)。このQuit
部分はbashに由来します。その子プロセスが終了シグナルで死んだことに気づき、それがその方法です。
シェルはすべての一般的なシグナルを処理するため、シェルで^ \と入力してもセッションを強制終了せずに、^ Cと同じ新しいプロンプトが表示されます。
このstty
コマンドを使用して、端末設定で遊ぶことができます。
¹ そして伝統的にコアダンプを生成しますが、最近では多くのシステムがデフォルトでそれを無効にしています。