如何在 Terminal.app 上显示自定义按键图标?

Jor*_*ran 4 icons terminal passwords unicode macos

当向需要用户和密码身份验证的服务器发送 POST 请求时,Terminal.app 会显示一个闪烁的钥匙图标,我认为它不是 Unicode。

输入用户“bucaran”的主机密码

当要求用户在我自己的脚本中输入合理的信息时,我可以检查是否TERM_PROGRAMApple_Terminal,但我不知道如何显示闪烁的图标。

Chr*_*age 9

“关键”图像不是字符字形,而是终端绘制的自定义光标形状。

只要看起来用户被要求输入密码或类似的敏感数据,终端就会显示这种特殊的光标形状。除了显示此光标外,它还将键盘限制为罗马输入法,以避免输入法无意中将敏感信息显示为行内文本或在另一个窗口中。这就像标准的 OS X 密码文本字段。

当终端看到 TTY 设备配置为规范(又名“cooked”)模式并且字符回显关闭时,终端进入此模式。在此配置中,用户输入不会回显,只有 TTY 设备输入缓冲区会看到字符,直到您键入 Return 将其发送到应用程序。这确保了在您输入文本时无论是 TTY 设备还是应用程序都无法回显用户输入,因此此配置通常仅用于读取敏感信息。

您可以通过运行在 Bash 中查看它的运行情况

stty -echo && echo Tell me your secrets: && cat; stty echo
Run Code Online (Sandbox Code Playgroud)

stty -echo关闭 TTY 字符回显,当 Bash 运行命令时它启用规范模式,因此以下cat命令将以“密码”模式运行。cat将回显每一行输入,直到您键入Control- D。退出stty echo后重新打开cat

请注意,read -s在这种模式下,shell 脚本可以简单地使用TTY 进行读取,例如,

while read -sp 'Tell me your secrets: '; do echo; echo $REPLY | vis; done
Run Code Online (Sandbox Code Playgroud)