如何隐藏终端中的文本输入

如何隐藏终端中的文本输入

我正在用 Bash 编写一个脚本,提示用户输入密码,并且我需要不显示输入的文本,就像您输入 ssh 密码时一样。

有人有这个问题的解决方案吗?

答案1

您可以添加-s到您的read命令(您没有提供它,所以我假设您正在使用read -r),因此它会变成:

read -r -s password

read --help

-r    do not allow backslashes to escape any characters
-s    do not echo input coming from a terminal

答案2

为了使终端不显示输入的文本,echo需要关闭。该命令stty -echo可实现此目的。要恢复正常,请运行stty echo

例子:

#!/bin/sh
printf "Enter password: "
stty -echo
read -r password
stty echo
echo ""
echo "password=$password"

如果由于拼写错误或其他错误导致脚本无法恢复回声,请运行reset以恢复。

上述脚本包括使用斯特蒂,与 POSIX 兼容。这意味着它可以与bash和一起使用/bin/sh

相关内容