我正在编写一个简单的命令行实用程序,要求用户输入密码。我决定使用bufio来读取用户输入,但不知道如何在用户终端上隐藏密码。这个功能是否在Go的标准库中,或者我是否需要使用操作系统级别的功能来完成这项工作?(这可能只会在Linux上运行,但最好也能在Windows上运行。)
发布于 2014-10-28 04:45:41
你想要的是关闭回声。这通常通过配置终端驱动程序termios来实现。最好的办法是阅读Linux的驱动程序文档(termios(3))。就我而言,在读取密码之前,您需要关闭ECHO。读取密码后,再次打开ECHO。不要使用bufio,因为你不想让缓冲干扰低级终端的东西。您可以从syscall包中访问所需的系统调用。
termios在所有类UNIX平台上都可用。这包括Linux、BSD、OS X和Solaris,但不包括Microsoft Windows。
发布于 2014-10-29 00:28:38
您可以使用使用键盘输入而不使用输出的termbox。到目前为止,我可以说,这在Windows上可以工作,但我不确定这是否可以在Linux上工作(我想是的)。安装后,有一个_demos文件夹,在此文件夹内有一个名为keyboard.go的示例。一旦启动,它将显示一个键盘,并突出显示按下的键。然而,它确实可以在我的电脑上工作,但当我按空格键/回车键/功能键或CTRL-(任意)键时,程序挂起。可能是代码中的错误或者Termbox内部的错误。我还没弄明白。此外,您还需要使用CGO来使用termbox来运行。
截图:

https://stackoverflow.com/questions/26595356
复制相似问题