防止显示类型字符(例如禁用termios中的“echo”属性)

时间:2012-06-11 20:23:42

标签: bash scripting terminal termios

我正在编写一个bash脚本,其中我从输入中读取单个字符。我是使用read -n 1 -s这样做的。 -n 1只读一个字符; -s是“无声”模式,其中键入的字符将不可见。

问题是,当当前执行的命令不是read时(无论何时执行bash脚本中的其他命令),该字符都会显示在终端中。

这是终端中程序的正常行为。要禁用此功能,通常会禁用回显模式,例如使用termios库。

如何在bash脚本中实现此目的?

我更喜欢纯bash / Unix命令中的解决方案(没有其他脚本语言,如python,perl等)。

1 个答案:

答案 0 :(得分:16)

stty -echo
# Anything they type won't output here
stty echo
# Now it will