我正在构建一个交互式前端的过程 迄今为止已用于运行工作负载的分布式应用程序 有类似结构的批处理作业,根本不需要UI。该应用程序主要使用Perl和C编写,并在Unix和Windows机器上运行,但我认为这与UI无关。
第一个这样的前端将有一个命令行用户界面 - 目前,我设想类似于Procurve的CLI 我与之合作的交换机和思科路由器。
与现代网络设备CLI一样,命令也会类似
简单的句子,(即show vlans ports 1-4
)和CLI将
有一些隐式状态,就像Unix shell和
Windows中的cmd.exe
具有环境变量并且当前有效
目录。此外,我想实现伟大的标签完成
尽可能地了解应用程序的状态,我希望能够用as做到这一点
尽可能少的application- 特定的代码。
低级功能(终端I / O)似乎很容易实现
GNU Readline或类似的库的顶部,但这只是在哪里
真正有趣的开始。到目前为止,我已经看过Perl模块
Term::Shell
和
Term::ShellUI
,
但我不相信我想要使用它们中的任何一个。我仍然
考虑滚动我自己的解决方案,目前我正在寻找
灵感。
无论如何,您能推荐任何应用程序或库吗? 实现语言,实现了一个良好的CLI,我可以从中实现 借鉴意见?
答案 0 :(得分:2)
我建议你看看Microsoft PowerShell背后的哲学。从在命令之间管道输入对象的想法到命令和参数语法的一致性,我认为它可以成为灵感的来源。
答案 1 :(得分:1)
关于你的最后一句话/问题,我特别喜欢zsh完成和行编辑(zle)。
答案 2 :(得分:1)
您可以尝试查看libcli:
BTW - 我忘了提到它是GNU Lesser GPL,并且思科在某些产品中实际使用它。“Libcli提供了一个共享库 包括类似思科的命令行 与其他软件接口。“