47

Linux/Unix にはシグナルがあります。( CtrlC)SIGINTは私には明らかです。CtrlXさて、他のいくつかのアプリケーションでは、 ?!経由のシグナルがあります。それはシグナルですか、それともエスケープシーケンスを生成しますか? CtrlC( CtrlVCtrlX...)に似たものとして使用できるものは他にありますか?

誰かが手がかりを持っている場合、私はbashよりもCに精通していますが、両方の言語での回答は大歓迎です!

4

5 に答える 5

82

すべての端末制御文字の割り当てを取得するには:

stty -a
于 2011-07-20T16:05:17.033 に答える
54

誤解がある可能性があります。CtrlC信号を生成しません。どこでも押すことが完全に可能CtrlCであり、悪いことが起こることはありません (たとえば、すべてのテキスト エディターやワープロでは、これが「コピー」のデファクト スタンダードです)。

ただし、シェルでプログラムを実行すると、キーを押すと、実際にはプログラムではなくシェルに入ります。シェルは (ほぼ) すべてをプログラムの stdin に転送し、stdout からのすべてを端末または別のプロセスまたはファイル (パイプまたはリダイレクトを使用した場合) に転送します。

が押されたことをシェルが認識すると、CtrlCシェルは割り込みシグナルを送信します。しかし、それは実際にはシェルが行うことであり、キーの組み合わせによって魔法のように起こることではありません。

についてCtrlX、あなたはおそらく を意味していCtrlZました。fgこれによりプロセスが停止し、シェルは、プロセスを再度実行するために使用できる番号を出力します。

于 2011-07-20T15:29:00.537 に答える
23

ウィキペディアより

Ctrlx Ctrle: $EDITOR プログラムの現在の行を編集するか、未定義の場合は vi を編集します。

Ctrlx Ctrlr: inputrc ファイルの内容を読み取り、そこにあるバインディングまたは変数割り当てを組み込みます。

Ctrlx Ctrlu: 行ごとに個別に記憶される、増分アンドゥ。

Ctrlx Ctrlv: bash の現在のインスタンスに関するバージョン情報を表示します。

Ctrlx Ctrlx: カーソルを元の位置に変更します。(Cx、x は十字形なので)。

のもう 1 つの使用法は、シェルでコマンドを入力するときCtrlxに を展開することです。*

あなたが持っているとしましょう:

$ ls *

を押すCtrlxと、現在のディレクトリ内のすべてのアイテムが次の*ように展開されます。*

$ ls dir1 dir2 file1 file2 file3`

上記の使用方法については、SuperUser に関するこのトピックも参照できます。

于 2013-01-10T10:12:48.373 に答える
17

ターミナルは、特定のキー シーケンスに特別な意味を割り当てます。これには、文字の削除、行頭までの削除 ( CtrlU)、...

具体的には、端末ISIGのローカル モードが有効になっている場合:

  • VINTR(通常) (ユーザーによる中断CtrlC) を生成します。SIGINT
  • VQUIT(通常) (SIGINT と同様ですが、コアのダンプもCtrl\) を生成します。SIGQUIT
  • VSUSP(通常は) (ターミナル I/O で停止CtrlZ) を生成します。SIGTSTP
  • VDSUSP(Linux ではなく、一部のシステムでは)SIGTSTPプログラムがそれを読み取ろうとすると、 が生成されます。

上記は設定可能です。これについては、termios(3)マンページに記載されています。

于 2011-07-20T16:02:03.913 に答える