内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Linux命令之stty与键盘信号

2018-12-03 20:40 出处:清屏网 人气: 评论(0

一、简介

最初的Unix设定假定人们使用终端连接主机计算机。30多年过去后。情况依然如此,即便是在自己的PC机上运行Unix。多年以来,终端发展为许多不同的类型,并且提供了许多不同类型的键盘,但是Unix一直能够很好地使用它们。这是因为Unix使用了一个 键盘映射系统 ,该系统非常灵活,可以用于任何类型的键盘。

所谓的键盘映射系统也就是使用一组标准的 键盘信号 。尽管这些信号是标准的,但是发送这些信号所需按下的键却可以根据需要修改,而GNU所提供的stty(set tty)则是可以对这些按键进行修改的工具。

二、stty语法

stty - change and print terminal line settings(stty命令用于显示和修改终端行设置)

Usage:

stty [-F DEVICE | --file=DEVICE] [SETTING]...

or:

stty [-F DEVICE | --file=DEVICE] [-a|--all]

or:

stty [-F DEVICE | --file=DEVICE] [-g|--save]

三、常见的键映射

如下所列出的键映射都是最常见的键映射,但是它们不是固定的。

信号 作用
erase <Backspace> / <Delete> / ^H 删除键入的最后一个字符
werase ^W 删除键入的最后一个单词
kill ^X / ^U 删除整行
intr ^C 停止正在运行的程序
quit ^\ 停止程序并保存core文件
stop ^S 暂停屏幕显示
start ^Q 重新启动屏幕显示
eof ^D 指示已经没有数据

四、使用示例

1、使用-a查看当前注册终端的设置情况

root@Chan:~# stty -a
speed 38400 baud; rows 38; columns 191; 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; discard = ^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 -flusho -extproc

需要时,这里显示的各种选择都可以重新配置。每种终端选项都有自己的名字(如ixon),其中大多数要么被设置要么被清除。在stty中相应选项前冠以负号(-),该选项被清除(禁止);如果无负号,该选项被设置。 当希望修改各选择的值时,应在stty命令中正确书写相应选项。如:

$ stty -ixon    #将流控制设置为OFF,而命令 
$ stty ixon    #则将其置为ON。在stty命令中可以同时设置多个选项: 
$ stty ixon 1200    #该命令将终端设置为1200波特,并将流控制置为ON。

2、解决backspace键映射问题

1)在linux/unix平台上的命令行界面中:

当你输错了字符,要想删除,然后习惯性的按下 backspace 键后,发现非但没有删除想要删掉的字符,还多出了两个字符 ^H

2)问题原因:

^H 键没有被映射到 erase 信号上。

3)解决办法:

这可以通过使用stty命令修改tty终端的设置来实现backspace删除功能。

stty erase ^h

3、回显设置

stty -echo    #关闭回显。比如在脚本中用于输入密码时。
stty echo     #打开回显。

4、打印当前终端的大小(行数和列数)

root@Chan:~# stty size
38 191

5、在命令行下禁止输出小写

stty olcuc     #开启
stty -olcuc    #恢复

6、忽略回车符

stty igncr    #开启
stty -igncr   #恢复

五、参考:

书箱:《Unix & Linux 大学教程》 (美)Harley Hahn 著 张杰良 译

GNU手册: man stty

中文手册: http://linux.51yip.com/search/stty

英文资料: The TTY demystified(解密TTY)

分享给小伙伴们:
本文标签: Linux命令stty

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号