24

当我尝试时:$ stty raw -echo在我的终端上(OS X 10.6 上的 Bash)。它会做一些事情,就像终端挂在那里一样。然后我查了手册:

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

原始(-原始)

如果设置,则更改终端的模式,以便不
执行输入或输出处理。如果未设置,则将终端的模式更改为执行输入和输出处理的某种合理状态。请注意,由于终端驱动程序不再具有单个 RAW 位,因此无法直观地知道在设置 raw 之前设置了哪些标志。这意味着取消设置 raw 可能不会恢复以前有效的所有设置。要将终端设置为原始状态,然后准确恢复,建议使用以下 shell 代码:

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

回声(-echo)

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

所以它应该将终端转为原始模式,然后按原样返回我输入的内容?有人可以解释一下这个命令是做什么的吗?当参数有破折号时有什么区别,例如raw-raw?他们的意思是一样的吗?有什么资源可以让我学习吗?

4

1 回答 1

41

首先,破折号表示“禁用”设置。所以这可以回显:

stty echo

这将禁用它:

stty -echo

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

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

于 2014-04-03T12:27:01.083 回答