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

关于 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 的绑定。我玩过它(没有在实际项目中使用),它肯定涵盖了所有功能。


推荐阅读

    linuxln命令实例?

    linuxln命令实例?,位置,数据,链接,地方,信息,文件,系统,概念,名字,盘中,ln命

    了解linux下常用命令?

    了解linux下常用命令?,工作,地址,系统,信息,命令,标准,目录,常用命令,操作,

    linux获取地址命令?

    linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,lin

    linux的u盘启动命令?

    linux的u盘启动命令?,系统,电脑,工具,信息,软件,网上,名称,工作,设备,通用,从

    linux终端返回命令行?

    linux终端返回命令行?,密码,状态,平台,系统,电脑,环境,认证,地址,终端,命令,

    linux远程执行多命令?

    linux远程执行多命令?,工具,服务,命令,状态,暂停,代码,底部,时间,地址,系统,L

    linux输入过的命令?

    linux输入过的命令?,系统,地址,数字,命令,工具,工作,环境,界面,历史,指令,lin

    改文件linux命令行?

    改文件linux命令行?,地址,系统,工作,信息,数字,文件,命令,设备,密码,权限,lin

    linux重新开机命令?

    linux重新开机命令?,系统,工作,标准,设备,命令,灵活,用户,电源,提示,主机,lin

    linux线程查询命令?

    linux线程查询命令?,系统,第一,线程,命令,软件,名称,信息,进程,选项,方法,Lin

    用linux命令输出id?

    用linux命令输出id?,系统,设备,工作,信息,地址,命令,工具,基础,目录,进程,lin

    linux架构快照命令?

    linux架构快照命令?,工作,系统,地址,信息,命令,目录,状态,基础,管理,多地,Lin

    linux命令字体太小?

    linux命令字体太小?,系统,等级,工具,数字,终端,字体,命令,字符,图形界面,系

    测试linux常用命令?

    测试linux常用命令?,工作,地址,系统,信息,命令,目录,情况,标准,功能,控制台,l

    u进入linux命令行?

    u进入linux命令行?,系统,地址,服务,电脑,命令,管理,工作,首页,终端,目录,linu

    linux下分区命令行?

    linux下分区命令行?,系统,工具,设备,信息,分区,情况,首次,名称,网络,命令,lin

    linux命令下载jdk?

    linux命令下载jdk?,官网,系统,地址,工作,工具,服务,管理,环境,网上,地方,怎样

    linux中ll命令不行?

    linux中ll命令不行?,系统,标准,命令,情况,软件,信息,环境,文件,终端,权限,lin

    linux的vsp命令?

    linux的vsp命令?,手机,系统,软件,状态,信息,设备,发行,平台,电脑,工作,如何在

    linux命令spool?

    linux命令spool?,服务,信息,系统,标准,定期,工具,文件,任务,命令,队列,linux