当我在终端上尝试:$ 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
?他们的意思是一样的吗?有什么资源我可以学到这个吗?
答案 0 :(得分:29)
首先,破折号表示"禁用"一个设置。所以这可以回应:
stty echo
这会禁用它:
stty -echo
当您禁用它时,您的输入不会回显给您,这就是为什么看起来好像终端正在挂起。尝试stty -echo
,然后输入ls
并按返回 - 您仍会看到ls
的输出。
raw
设置表示不处理输入和输出,只是直接发送。处理可以是忽略某些字符,将字符转换为其他字符,允许中断信号等。例如,使用stty raw
,您无法按Ctrl-C结束处理。