首页 / 知识

关于 java:向 Unix 命令行应用程序添加命令调用

2023-04-14 12:35:00

关于 java:向 Unix 命令行应用程序添加命令调用

Adding command recall to a Unix command line application

我正在开发一个用 Java6 编写的 Solaris 命令行应用程序。我希望能够像许多 Unix 工具(shell、VIM 命令模式提示符等)一样使用向上和向下箭头滚动浏览先前命令的历史记录。

是否有任何标准方法可以实现这一点,还是我必须自己动手?


是的,使用 GNU readline 库。


我认为您正在寻找 JLine 之类的东西,但我从未使用过它,因此无法证明它的质量。

她显然可以处理自动完成和命令行历史,最后一个版本是最近(今年 2 月),所以它绝不是死的。


ledit 在 linux 上非常适合这类事情。它可能很容易在 solaris 上编译。

澄清:ledit package了对您其他命令行应用程序的调用,甚至可以传递一个文件以永久存储您的历史记录。

这是主页:http://cristal.inria.fr/~ddr/ledit/


警告:GNU readline 受 GPL 许可条款的约束:

Readline is free software, distributed
under the terms of the GNU General
Public License, version 2. This means
that if you want to use Readline in a
program that you release or distribute
to anyone, the program must be free
software and have a GPL-compatible
license. If you would like advice on
making your license GPL-compatible,
contact licensing@gnu.org.

换句话说,使用 Readline 将 GPL 特性从一个库传播到整个程序。 (与 LGPL 相比,它允许运行时链接到库,并且只需要开源来改进库本身。)

对于我们这些在商业领域的人来说,即使我们不开发商业应用程序,这也是一个阻碍。

无论如何,维基百科页面列出了几个替代方案,包括 JLine,这听起来很有希望。

顺便说一句:我在一家设计医疗产品的公司工作。我们从 PC 软件中赚取零 (0) 美元。几乎我们所有的软件都在我们设计的嵌入式系统上运行(我们不会从该软件的销售/升级中赚钱,只有产品本身);有时我们确实有可以在最终用户的 PC 上运行的软件诊断工具。 (未向客户发布的设计/制造/测试软件我认为可能使用 GPL 库,但我不确定)医疗产品具有相当严格的控制;你基本上必须向 FDA 证明它对用户是安全的,这不像最终用户可以决定"哦,我不喜欢这个软件,我会对其进行调整或使用 XYZ 公司的售后替代品"——那会让设备制造商承担巨大的责任。


有一个 SourceForge 项目,http://java-readline.sourceforge.net/,它为 GNU readline 提供基于 JNI 的绑定。我玩过它(没有在实际项目中使用),它肯定涵盖了所有功能。


应用程序命令行命令调用

最新内容

相关内容

猜你喜欢