我正在使用Java6编写的Solaris命令行应用程序。我希望能够像许多Unix工具允许的那样使用向上和向下箭头滚动浏览以前命令的历史记录(shell,VIM命令模式提示等)。
有没有任何标准的方法来实现这一点,还是我必须自己动手?
答案 0 :(得分:5)
是的,请使用GNU readline库。
答案 1 :(得分:3)
我认为您正在寻找像JLine这样的东西,但我从未使用它,因此无法证明其质量。
她显然可以处理自动完成和命令行历史记录,最近的版本是最近发布的(今年2月),所以它绝不会死。
答案 2 :(得分:2)
ledit在linux上很棒。它可能很容易在solaris上编译。
澄清: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的售后市场更换” - 那就是让设备制造商承担巨大的责任。