繁体   English   中英

Java命令行“shell”具有自动完成功能

[英]Java command line “shell” with auto-complete

我需要创建一个Java命令行,它将在服务器上远程调用。 它需要:

  • 读取用户的文本“行”。
  • 识别用户是否按下“tab”键以便于自动完成。
  • 识别用户是否按下“上/下”键以获取历史记录。

在我开始自己推出之前,是否有人知道Java库可能会促进全部或部分内容?

从ssh中的命令行看起来可能如下所示:

bob> java -jar MyTool.jar

MyTool开始了。
请输入命令:

> server1启动
服务器启动...
服务器启动

> server2加载帐户
完成

> server3关机
完成

>退出

查看JReadlinejline2

看起来你似乎想要一次问3个不同的问题而不知道你真正想要答案的是什么。

  • 接受用户输入并提供自动完成是微不足道的,我非常怀疑你会找到这样一个任务的通用库

  • 解析复杂的类似bash的语句听起来像是很酷的东西,并且可能存在一个库来做这件事,但我认为它不会给你很大的空间来创建你自己的一组类似bash的指令。 (特别是考虑到你说它需要比你作为bash脚本所做的任何事情更复杂 - 这是一个很高的命令)

  • 解析简单的用户输入就好像它是一个命令行输入或命令也是相当简单的,如果这是你正在寻找的,你应该看看这个可能的重复: 如何在Java中解析命令行参数?

我建议重新构建您的问题,使其更具体地说明您正在寻找的内容,并避免强调“自动完成”的简单任务,并简单地接受文本框中的用户输入。

你看过BeanShell了吗? 它不像shell本身(如bash或csh),但它可以让你像解释器一样输入java命令,你可以使用tab来自动完成。

我只使用了1.X版本的bean shell,但它们总是为你打开一个窗口,所以它不是你可以在现有shell中运行的东西。

picocli Java命令行解析库最近添加了自动完成功能。 它的主要用例是创建命令行工具,但我已经看到它使用嵌入在类似shell的应用程序中。 重要的不是如何从System.in读取,而是从用户输入解析子命令,选项和参数。

您可能还喜欢它如何使您在使用帮助消息中使用ANSI颜色和样式。 您可以在shell应用程序中利用它。

在此输入图像描述

免责声明:我是作者,因此有偏见。

我假设你的意思类似于python解释器。 Java中没有等价的原因是因为Java需要在执行之前编译为字节码。

如果您正在寻找具有良好自动完成功能的东西。 我会推荐eclipse或netbeans。 他们还会自动编译您的应用程序,允许您在编写完成后快速运行代码。

希望有所帮助。

在这个方面迟到了派对,但我会加入CrashCliche

Apache Karaf有一个命令shell,可以用作库来为其他应用程序构建命令shell。 您可以创建表示命令的类,并使用注释指定命令的选项。 Karaf库提供选项卡完成,历史记录和行编辑,以及以交互方式运行或读入文件或命令行参数以作为脚本执行的功能。

我在这里发现了它并在我自己的项目中使用过它; 它运作得很好。 因为我没有使用它,所以我无法与其他任何人进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM