将命令调用添加到Unix命令行应用程序

时间:2008-09-08 02:51:08

标签: java unix command-line command-prompt ledit

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

有没有任何标准的方法来实现这一点,还是我必须自己动手?

5 个答案:

答案 0 :(得分:5)

是的,请使用GNU readline库。

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

对于那种事情,

ledit在linux上很棒。它可能很容易在solaris上编译。

澄清:ledit将调用包装到您的其他命令行应用程序,甚至可以传递文件以持久存储您的历史记录。

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

  

Readline是免费软件,分发   根据GNU General的条款   公共许可证,版本2.这意味着   如果你想在一个使用Readline   您发布或分发的程序   对任何人来说,该计划必须是免费的   软件并与GPL兼容   执照。如果您需要建议   使您的许可证与GPL兼容,   联系licensing@gnu.org。

换句话说,使用Readline将GPL从库扩展到整个程序。 (与LGPL相比,LGPL允许运行时链接到库,并且仅需要开源才能改进库本身。)

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

无论如何,the wikipedia page列出了几个替代品,包括JLine,这听起来很有希望。

撇开:我为一家设计医疗产品的公司工作。我们从PC软件上赚了零(0)美元。几乎所有的软件都在我们设计的嵌入式系统上运行(我们不会从这个软件的销售/升级中获得任何收益,只有产品本身);有时我们有可以在最终用户的PC上运行的软件诊断工具。 (设计/制造/测试软件没有发布给客户我认为可能使用GPL库但我不确定)医疗产品有相当严格的控制;你基本上必须向FDA证明它对用户是安全的,它不像最终用户可以决定“哦,我不喜欢这个软件,我只是调整它或使用公司XYZ的售后市场更换” - 那就是让设备制造商承担巨大的责任。