Lua中的密码输入功能

发布于 2024-12-25 12:21:05 字数 87 浏览 1 评论 0原文

如何在Lua中进行CLI密码屏蔽?例如,当我写密码时,它会变成星号或根本不显示任何内容?我需要独立于平台的解决方案,因为我的脚本将在 Java 应用程序中使用。

How to make CLI password masking in Lua? E.g. when I write password it changes into asterisk or nothing is shown at all? I need platform-independent solution as my script will be used in Java application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橘虞初梦 2025-01-01 12:21:05

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

由于 Lua 是用 ANSI C 编写的,因此如果不按 Enter 键则无法从命令行获取字符。但是,您可以使用与 luaposix 附带的curses.lua 等库的绑定。

或者,如果您假设您将拥有 ANSI VT,则可以采用如下 hack:

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!")

有关 ANSI 终端控制的更多信息

但是,如果它将用于 Java 应用程序,为什么不使用 Java 作为密码提示呢?我想他们对 cli 的支持和控制会更好并且是跨平台的......

In plain Lua, the answer is simple: you can't.

Since Lua is written in ANSI C you can not get characters from the command line without having to press enter. You can however make use of bindings to libraries like curses.lua which comes with luaposix.

Or if you can assume you'll have an ANSI VT, you can resort to a hack like this:

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

But if it'll be used for a Java application, why not use Java for the password prompt. I guess their support and control of the cli would be better and cross-platform...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文