回答:
カーネルのターミナルドライバー(termios
)は、プロセスに信号を送信したり、ファイルの終わりを送信したり、文字を消去したりするために入力できる特別なキーを解釈します。これは基本的なUnixカーネル機能であり、ほとんどのUnixおよびLinux実装で非常によく似ています。
このstty
コマンドは、termios
特殊文字、および端末回線ドライバーの他のパラメーターを表示または設定します。
呼び出しstty -a
て、特殊文字の現在の値とその他の「端末回線設定」を確認します。次の例では、intr
is Ctrl+ C、eof
is Ctrl+ D、susp
is Ctrl+であることを確認できますZ。(特殊文字の設定のみを表示するために他の出力を削除しました):
stty -a
GNU / Linuxの特殊文字:
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
stty -a
FreeBSDの特殊文字:
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
特殊文字の値を変更するには、たとえば、割り込み文字をCtrl+ CからCtrl+ に変更するには、次のようにE呼び出しstty
ます(^E
文字どおり2文字で、サーカムフレックス(^
)の後に文字E
):
stty intr '^E'
詳細については、stty
およびのマニュアルページを参照してくださいtermios
。GNU / Linuxでは、tty_ioctl
manページも確認できます。
ノート:
intr
キー(Ctrl+ Cデフォルトでは)、実際にプロセスを殺すが、(割り込み信号を送信するために、カーネルが発生していないSIGINT
プロセスグループ内のすべてのプロセスに)。プロセスはシグナルをキャッチまたは無視するように調整できますが、ほとんどのプロセスは終了します。これはデフォルトの動作です。
Ctrl+がdログアウトする理由は、端末回線ドライバがシェルの標準入力でEOF(ファイルの終わり)を送信するためです。シェルは、標準入力でファイルの終わりを受け取ると終了します。
-a
オプションがに追加されましたstty
。
stty intr '^E'
てみましたが(一時的に)現在の端末/端末のみで機能します(設定)。どうすればグローバルかつ永続的に変更できますか?
stty
$ HOME / .profile、$ HOME / .bashrc、またはその他のシェル起動初期化ファイルを呼び出すのが最善の方法だと思います。
tty
tty
ですか?多分それは新しい質問かもしれませんか?
http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/から
Bashには、!(強打)bashコマンドでファンキーなことをできるようにします。
^U
ているに到達する方法はありstty -a
ますか?できれば、readlineの定義を解除せずに(おそらく3番目のmod / metaキーを使用して)。ctrl + u readlineバインディングによってのみシャドウイングされていると思いますか?
bind -p
ものhelp bind
と同様に、リストアップしてみてください