Bash 什么是;stty raw-echo“;在OSX上做什么

Bash 什么是;stty raw-echo“;在OSX上做什么,bash,stty,Bash,Stty,当我尝试时:$stty raw-echo在我的终端上(OS X 10.6上的Bash)。它可以把东西串起来,就像是挂在那里的候机楼。然后我查阅手册: stty-设置终端设备接口的选项 raw(-raw) 如果设置,则更改终端模式,使其无输入或 执行输出处理。如果未设置,请更改的模式 终端到某种合理的状态,执行输入和输出 处理。请注意,由于终端驱动程序不再具有 单个原始位,无法直观显示设置了哪些标志 在设置原始之前。这意味着未经处理的生料可能不会放回原处 以前生效的所有设置。设置终端 进入原始状态

当我尝试时:
$stty raw-echo
在我的终端上(OS X 10.6上的Bash)。它可以把东西串起来,就像是挂在那里的候机楼。然后我查阅手册:

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

如果设置,则更改终端模式,使其无输入或
执行输出处理。如果未设置,请更改的模式 终端到某种合理的状态,执行输入和输出 处理。请注意,由于终端驱动程序不再具有 单个原始位,无法直观显示设置了哪些标志 在设置原始之前。这意味着未经处理的生料可能不会放回原处 以前生效的所有设置。设置终端 进入原始状态,然后准确地恢复它,如下shell 建议使用以下代码:

save_state=$(stty -g)
stty raw
...
stty "$save_state"              
回声(-echo)

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

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

首先,破折号表示“禁用”设置。因此,这可以实现回声:

stty echo
这将禁用它:

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

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