shell 的 stty -icanon命令作用是什么

我查了man stty还是看不懂,没有明确的解释

哪位高人可以帮忙解释下呢
麻烦请不要复制粘贴了,浪费你我时间

第1个回答  2013-11-27

按照楼上的说法

icanon选项是控制tty的Ctrl-H,Ctrl-W,Ctrl-U功能的,于是我做了下面的实验发现,还有更多

    关闭icanon选项:stty -icanon

    执行cat命令,然后输入发现

    ①输入变为hheelloo  wwoorrlldd

    ②Ctrl-W,Ctrl-D,Ctrl-H,Ctrl-X都不起作用了

    重新开启icanon选项:stty icanon(注意没有中划线了)

    执行cat,输入hello world,发现一切正常了

结论:

   icanon选项控制了一些输入时的功能,manpage中:

    enable erase, kill, werase, and rprnt special characters

   但是如果erase, kill, werase对应了Ctrl-H,Ctrl-X,Ctrl-D,Ctrl-W,还有rprnt不明白是什么意思,难道是回显(所以hello变成了hheelloo)

第2个回答  2013-11-27
bourne shell中的stty和控制字符
可以用控制字符(Ctrl/Control系列组合键)执行一些特殊功能,例如停止和开始屏幕输出,删除整个命令行,或停止执行一个命令。 当然这些控制字符可以用stty命令进行重定义。
控制字符 关键字 目的
Control +c intr 中止当前运行的命令
Control +d eof 删除当前字符,指到文件的结尾,或者退出终端
Control +u kill 删除光标左边(不含光标)所有的字符
Control +w werase 删除命令行的最后一个单词
Control +s stop 中止屏幕输出
Control +q start 恢复屏幕输出,解除Control +s的操作
Control +a 光标跳到当前行头(bash)
Control +e 光标跳到当前行尾(bash)
Control +k 删除光标右边(含光标)所有的字符(bash)
Control +z 暂停当前命令,准备用bg转到后台继续执行(bash)
在bourne shell的stty指令中,erase/werase/kill 分别表示:删除一个字符(delete)/最后一个单词(Ctrl-w)/当前行(Ctrl-u),最常用的自定义如下:
l stty erase ^H -------erase表示删除一个字符,^H表示敲下Backspace键,默认用Delete键
l stty werase ^? -------wereae表示删除最后一个单词,^? 表示敲下Delete键
l stty kill ^[ -------kill表示删除当前行,^[表示敲下Esc键,默认用Ctrl-u
l stty ek -------把erase和kill恢复成默认值(Delete和Ctrl-u)
l stty -echo -------关闭命令的回显,即键入的任何字符均不在屏幕显示本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网