当向需要用户和密码验证的服务器发送 POST 请求时,Terminal.app 会显示一个闪烁的钥匙图标,我相信不是 Unicode。
当要求用户在自己的脚本中输入合理信息时,我可以检查是否TERM_PROGRAM
是Apple_Terminal
,但我不知道如何显示闪烁的图标。
答案1
“键”图像不是字符字形,而是终端绘制的自定义光标形状。
每当用户被要求输入密码或类似的敏感数据时,终端就会显示这种特殊的光标形状。除了显示此光标外,它还会将键盘限制为罗马输入法,以避免输入法无意中将敏感信息显示为内联文本或显示在另一个窗口中。这就像标准的 OS X 密码文本字段一样。
当终端发现 TTY 设备配置为规范(又称“cooked”)模式且字符回显已关闭时,它就会进入此模式。在此配置下,用户输入不会被回显,只有 TTY 设备输入缓冲区才会看到字符,直到您键入 Return 将其发送到应用程序。这可确保 TTY 设备和应用程序都无法在您输入文本时回显用户输入,因此此配置通常仅用于读取敏感信息。
你可以在 Bash 中运行它,
stty -echo && echo Tell me your secrets: && cat; stty echo
stty -echo
关闭 TTY 字符回显,并且当 Bash 运行命令时,它会启用规范模式,因此以下cat
命令将在“密码”模式下运行。cat
将回显每一行输入,直到您键入Control- D。退出stty echo
后将其重新打开cat
。
请注意,在此模式下,shell 脚本可以简单地用于read -s
读取 TTY,例如,
while read -sp 'Tell me your secrets: '; do echo; echo $REPLY | vis; done