什么是“stty raw -echo”在OS X上做什么

时间:2014-04-03 09:11:44

标签: bash stty

当我在终端上尝试:$ stty raw -echo时(OS X 10.6上的Bash)。它确实有点刺激,就像终点站那样。然后我查阅手册:

  

stty - 设置终端设备接口的选项

     

raw(-raw)

     

如果设置,请更改终端的模式,以便无输入或
  执行输出处理。如果未设置,请更改模式   终端到一些执行输入和输出的合理状态   处理。请注意,由于终端驱动程序不再具有   单个RAW位,不可能直观地设置标志   在设定原始之前。这意味着未设置的原始数据可能不会退回   以前生效的所有设置。设置终端   进入原始状态然后准确还原它,以下shell   建议使用代码:

save_state=$(stty -g)
stty raw
...
stty "$save_state"              
     

echo(-echo)

     

回复(不回显)每个输入的字符。

所以它应该以原始模式转换终端,然后返回我输入的内容?有人可以解释这个命令的作用吗?当一个参数出现破坏时有什么不同,例如: raw-raw?他们的意思是一样的吗?有什么资源我可以学到这个吗?

1 个答案:

答案 0 :(得分:29)

首先,破折号表示"禁用"一个设置。所以这可以回应:

stty echo

这会禁用它:

stty -echo

当您禁用它时,您的输入不会回显给您,这就是为什么看起来好像终端正在挂起。尝试stty -echo,然后输入ls并按返回 - 您仍会看到ls的输出。

raw设置表示不处理输入和输出,只是直接发送。处理可以是忽略某些字符,将字符转换为其他字符,允许中断信号等。例如,使用stty raw,您无法按Ctrl-C结束处理。