2012-01-05 542 views
2

如何在Lua中设置CLI密码屏蔽?例如。当我写密码它变成星号或根本没有显示?我需要与平台无关的解决方案,因为我的脚本将用于Java应用程序。Lua中的密码输入功能

+0

可能重复[在lua中用星号隐藏密码](http://stackoverflow.com/questions/5787796/hide-password- with-asterisk-in-lua) – lhf 2012-01-06 01:39:50

+0

你在JVM中运行Lua吗? – ponzao 2012-01-06 13:16:20

回答

2

在普通的Lua中,答案很简单:你不能。

由于Lua是用ANSI C编写的,所以无法从命令行获取字符而无需按Enter键。但是,您可以使用库的绑定,例如luaposix附带的curses.lua。

或者,如果你可以假设你有一个ANSI VT,您可以诉诸这样一个黑客:

io.write("\027[s") -- save cursor position 
l=io.read() 
io.write('\027[u',('*'):rep(#l),"\n") -- rewind to where we were, and fill with the correct amount of stars 
print("pst, I got", l, "but don't tell anyone!") 

More info about ANSI terminal control

但如果它会被用于Java应用程序,为什么不在密码提示中使用Java。我猜他们的支持和控制cli会更好,跨平台...