Answers:
内核的终端驱动程序(termios
)解释可以键入的特殊键,以将信号发送给进程,发送文件结尾,擦除字符等。这是Unix内核的基本功能,在大多数Unix和Linux实现中非常相似。
该stty
命令显示或设置termios
特殊字符以及终端线驱动器的其他参数。
调用stty -a
以查看特殊字符的当前值和其他“终端线设置”。在下面的例子,你可以看到,intr
是Ctrl+ C,eof
是Ctrl+ D,susp
为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
实际上是两个字符,circumflex(^
)后跟字母E
):
stty intr '^E'
欲了解更多信息,请参阅手册页stty
和termios
。在GNU / Linux上,您也可以查看tty_ioctl
手册页。
笔记:
该intr
键(Ctrl+ C默认情况下),实际上并没有杀死进程,但导致内核发出中断信号(SIGINT
进程组内)的所有进程。进程可以安排捕获或忽略信号,但是大多数进程将终止,这是默认行为。
Ctrl+ d将您注销的原因是因为终端行驱动程序在外壳程序的标准输入上发送了EOF(文件结尾)。当外壳在其标准输入上收到文件末尾时,外壳退出。
-a
选项已添加到中stty
。
stty intr '^E'
它可以工作(设置),但是暂时且仅适用于当前终端/ tty。如何在全球范围内永久更改?
stty
在$ HOME / .profile或$ HOME / .bashrc或其他一些Shell启动初始化文件中调用。
tty
tty
?也许这可能是一个新问题?
从http://www.skorks.com/2009/09/bash-shortcuts-for-maximum-productivity/
Bash还具有一些使用!的便捷功能。(bang),让您可以使用bash命令执行一些时髦的操作。
^U
,即stty -a
对SIGKILL定义在Linux上显示,从庆典?最好不要定义readline内容(也许通过第三个mod / meta键)。我认为它只是被ctrl + u readline绑定遮盖了?
bind -p
列出,以至于help bind
其他