2009-12-12 36 views
3

我正在將交互式前端構建到 分佈式應用程序,該應用程序迄今已用於運行具有批處理作業結構且不需要編號的工作負荷 所有的UI。這個應用程序主要是用Perl和C編寫的,並且運行在Unix和Windows機器上,但我認爲這與UI不相關。對如何構建偉大的命令行界面的啓示

第一個這樣的前端將會有一個命令行用戶界面 - 目前,我設想類似的Procurve的的CLI 交換機和Cisco路由器我合作過的東西。

的現代化網絡設備的CLI,命令將類似於 簡單的句子,(即show vlans ports 1-4)和CLI將 有一些隱含的狀態,很多在Unix外殼和 cmd.exe在Windows中有環境變量和電流的方式工作 目錄。此外,我想實現偉大的選項卡完成, 儘可能知道應用程序的狀態,我希望能夠做到這一點儘可能與 小應用程序-特定代碼。

底層功能(終端I/O)似乎很容易實現在GNU Readline或類似庫的頂部,但這只是 真正的樂趣開始的地方。到目前爲止,我已經看過Perl模塊 Term::ShellTerm::ShellUI, 但我不相信我想使用它們中的任何一個。我仍然在考慮滾動我自己的解決方案,目前我主要在尋找 的靈感。

您可以推薦任何應用程序或庫,不管 實現語言,實現一個良好的CLI,我可以從 借用想法嗎?

+3

我不知道靈感,但我非常不喜歡思科交換機的CLI。當然,它具有漂亮的自動完成功能,但該功能基本上是唯一的在線幫助,而且還遠遠不夠。另外,輸出通常很難解析,這使得腳本很難 - 首先排除CLI的全部要點。 – 2009-12-12 13:46:42

+0

已注意。與思科交換機不同,我公開了我的應用的完整API,因此不需要任何'期望'腳本。 – hillu 2009-12-12 13:49:07

+0

誰是你的目標聽衆?他們是非常技術性的並習慣於CLI? – XanderLynn 2009-12-12 13:51:05

回答

1

你可以嘗試在看看libcli:

「Libcli提供了一個共享庫 包括思科相似的命令行界面 到其他軟件。」

http://code.google.com/p/libcli/

順便說一句 - 我忘了提,它是GNU GPL小以及在某些產品實際使用的思科。

+0

README文件中描述的樹結構的想法與我希望將詞彙壓縮成儘可能少的代碼的想法產生共鳴。 +1 – hillu 2009-12-12 14:39:27

1

至於你最後一句話/問題,我特別喜歡zsh完成和行編輯(zle)。

2

我建議你看看Microsoft PowerShell的基本原理。從命令之間的輸入類型對象到其命令和參數語法的一致性的想法,我認爲它可以成爲靈感的來源。