Unix快捷键与信号

Unix快捷键与信号


键盘映射

Unix有一些特殊的信号,来控制程序的运行,例如intr信号(interrupt,中断)表示终止当前程序。而这些信号通常会被某个快捷键映射,例如Ctrl+C映射到intr信号,因此当我们按下Ctrl+C就可以终止当前程序。

我们可以使用命令stty -a来查看当前终端所有的信号都被映射哪个快捷键了,这些映射通常由于终端的不同而不同,使用命令echo $TERM可以查看当前的终端类型。由于时代发展,现在都用PC机运行终端仿真程序来访问Linux,终端类型要么是xterm,要么是VT100,所以键盘映射也都差不多。例如

[root@centos ~]# stty -a
speed 38400 baud; rows 23; columns 166; line = 0;
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;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

tip:由于写快捷键时,写Ctrl很麻烦,所以使用^来代表Ctrl,例如^C代表Ctrl+C,下面我也将采用这种方式


常见的信号含义与快捷键

信号描述快捷键
intr终止当前程序^C
erase删除光标前一个字符backspace
werase删除光标前一个单词^W
kill删除光标前所有字符^U
stop/start暂停/开始屏幕显示,当有大量输出时可以暂停查看^S/^Q
eof输入结束,可用于告诉shell输入结束,来退出登陆^D

修改键盘映射

使用命令stty 信号 快捷键即可,例如

stty erase ^H

tip:可以映射到任意键上,例如stty kill K,这样当按下k,将清空输入,非常好玩。


换行字符和返回字符

换行字符对应^J,返回字符对应^M

在Unix中,将键盘键入的数据视为与从文件中读取的数据相同,这一特性称为标准输入,在Unix看来,他们都是输入,没有区别。

在Unix的标准输入中,每行输入都必须以一个^J结束

当我们按下Enter键时,将发送^M,为了满足标准输入,Unix会将键盘输入的 ^M 替换成 ^J
当将文本打印到控制台时,会将^J 替换成 ^M^J

tips:在文本文件中,Unix使用^J作为每行结束,而Windows使用^M^J作为每行结束

重置终端

当终端输入出现问题时,可以尝试使用如下命令重置终端

stty sane
reset

如果回车键被敲坏了,可以使用^J^M替代

如果按Backspace没有删除字符,而是显示^H,则可以尝试Ctrl+Backspace

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值