使用命令行上的Go,如何对用户隐藏命令行输入';s终点站?

使用命令行上的Go,如何对用户隐藏命令行输入';s终点站?,go,terminal,Go,Terminal,我正在编写一个简单的命令行实用程序,它向用户请求密码。我决定使用bufio读取用户输入,但不知道如何在用户终端上隐藏密码。这是Go的标准库中的功能,还是我需要使用操作系统级功能来实现这一点?(这可能只会在Linux上运行,但更希望在Windows上也能运行。)您需要的是关闭回声。这通常通过配置终端驱动程序termios来实现。您最好阅读Linux的驱动程序文档()。就我而言,在读取密码之前,您需要关闭ECHO。读取密码后,再次打开ECHO。不要使用bufio,因为您不希望缓冲干扰低级终端内容。您

我正在编写一个简单的命令行实用程序,它向用户请求密码。我决定使用bufio读取用户输入,但不知道如何在用户终端上隐藏密码。这是Go的标准库中的功能,还是我需要使用操作系统级功能来实现这一点?(这可能只会在Linux上运行,但更希望在Windows上也能运行。)

您需要的是关闭回声。这通常通过配置终端驱动程序termios来实现。您最好阅读Linux的驱动程序文档()。就我而言,在读取密码之前,您需要关闭
ECHO
。读取密码后,再次打开
ECHO
。不要使用bufio,因为您不希望缓冲干扰低级终端内容。您可以从包中访问系统调用

termios在每种类似UNIX的平台上都可用。这包括Linux、BSD、OS X和Solaris,但不包括Microsoft Windows。

您可以使用键盘输入而不输出。到目前为止,我可以说,这在Windows上是有效的,但我不确定这在Linux上是否有效(我想是的)。 安装后,会有一个_demos文件夹,该文件夹中有一个名为keyboard.go的示例。一旦启动,它将显示一个键盘,并突出显示按下的键。但是,它在我的电脑上确实可以工作,但当我按空格键/回车键/功能键或CTRL-(任意)键时,程序会挂起。可能是代码中或Termbox内部的错误。我还没弄明白。此外,还需要使用CGO来使用termbox来运行

截图:


我自己也没有用过,所以我不会发布答案,但这可能是您想要的: