golang 有什么好用的命令行解析实现库么

2022-04-23 01:38:24 +08:00
 tlmn

现在需要一个 command line 解析的库,需要能够实现:

- command 自动补全(这里的 command 并非操作系统的命令,而是我代码中写好的 Action )
- 在输入时能够提示当前输入对应的哪几个 command (比如输入 h/H 提示 Help 、Hash 等)
- 能够一定情况下补全系统文件名称(比如在某个 command 后输入了 /etc/ 能够自动检索当前系统目录并给出类似 pty 的提示)

目前看到 github 有个 github.com/chzyer/readline 的库能够实现部分场景的需求,请教一下万能的 v 友是否有其它推荐?

2345 次点击
所在节点    Go 编程语言
15 条回复
kwanzaa
2022-04-23 01:59:53 +08:00
最近也在看,碰壁了。
Cobra 虽说能实现,但我 demo 没有成功。
Vegetable
2022-04-23 02:44:13 +08:00
你这些功能都不是命令行本身提供的,是 shell 提供的。尤其是 3

类似 cobra 这样的库,可以提供自动生成 shell 补全所需要的脚本。
https://github.com/spf13/cobra/blob/master/shell_completions.md
Kobayashi
2022-04-23 03:08:22 +08:00
文不对题。你说的这些和命令行解析一点关系都没有。
补全属于 shell 的功能,需要写 shell 补全文件声明如何补全。
0o0O0o0O0o
2022-04-23 08:57:45 +08:00
#2 #3 OP 说的 command 补全和 shell 补全应该是不一样的。

类似于
$ openssl ran
补全 rand ,这是 shell

$ openssl
> ran
这类补全我一直以为是程序处理的
lijiangang886
2022-04-23 09:07:51 +08:00
可能跑题,一个栗子,kubectl 的命令行补全是它自己提供的一个一万多行( bash 版本)的补全脚本,然后 shell 来 source 这个脚本
https://kubernetes.io/docs/reference/kubectl/cheatsheet
kkhaike
2022-04-23 09:12:34 +08:00
我的项目一般都用
github.com/urfave/cli/v2
tlmn
2022-04-23 12:20:15 +08:00
回复上楼的回复,我的理解这确实是 shell 的补全,但又感觉说是 shell 不太合适,毕竟是程序自己实现的补全,因此记录为命令行补全。
tlmn
2022-04-23 12:21:45 +08:00
@0o0O0o0O0o 对的,我需要的就是这种程序处理的补全,希望看看有没有自动化实现的库,只需要定义命令,其它的交由库去实现。
tlmn
2022-04-23 12:22:19 +08:00
@Vegetable 我需要的不是这种类型的 shell 补全,可以参考一下四楼。
SenLief
2022-04-23 13:09:18 +08:00
我的理解你可能需要的是 cli 的补全。
看下这个库符不符合。https://github.com/c-bata/go-prompt
tlmn
2022-04-23 14:32:43 +08:00
@SenLief 感谢,看了一下符合需求。
deacyn
2022-04-23 17:18:39 +08:00
@kkhaike 为什么打开是 404 呢
kkhaike
2022-04-23 17:22:52 +08:00
kkhaike
2022-04-23 17:23:41 +08:00
Radiation
2022-04-23 19:38:58 +08:00
@deacyn 你去掉 v2 就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX