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

Att*_*ury 4 bash scripts

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

有没有人有这个解决方案?

Bea*_*nog 20

你可以添加-s到你的read命令中(你没有提供它,所以我想你正在使用read -r),所以它会变成:

read -r -s password
Run Code Online (Sandbox Code Playgroud)

来自read --help

read -r -s password
Run Code Online (Sandbox Code Playgroud)

  • 还要避免剥离前导和尾随空格:`IFS= read -rs password` (3认同)

Joh*_*024 9

为了使终端不显示键入的文本,echo需要关闭。该命令stty -echo执行此操作。要恢复正常,请运行stty echo

例子:

#!/bin/sh
printf "Enter password: "
stty -echo
read -r password
stty echo
echo ""
echo "password=$password"
Run Code Online (Sandbox Code Playgroud)

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

上面的脚本,包括sttyread的使用,是 POSIX 兼容的。这意味着它将与bash和 一起使用/bin/sh