现在需要一个 command line 解析的库,需要能够实现:
- command 自动补全(这里的 command 并非操作系统的命令,而是我代码中写好的 Action ) - 在输入时能够提示当前输入对应的哪几个 command (比如输入 h/H 提示 Help 、Hash 等) - 能够一定情况下补全系统文件名称(比如在某个 command 后输入了 /etc/ 能够自动检索当前系统目录并给出类似 pty 的提示)
目前看到 github 有个 github.com/chzyer/readline 的库能够实现部分场景的需求,请教一下万能的 v 友是否有其它推荐?
1 kwanzaa 2022-04-23 01:59:53 +08:00 最近也在看,碰壁了。 Cobra 虽说能实现,但我 demo 没有成功。 |
![]() | 2 Vegetable 2022-04-23 02:44:13 +08:00 你这些功能都不是命令行本身提供的,是 shell 提供的。尤其是 3 类似 cobra 这样的库,可以提供自动生成 shell 补全所需要的脚本。 https://github.com/spf13/cobra/blob/master/shell_completions.md |
3 Kobayashi 2022-04-23 03:08:22 +08:00 via Android 文不对题。你说的这些和命令行解析一点关系都没有。 补全属于 shell 的功能,需要写 shell 补全文件声明如何补全。 |
4 0o0O0o0O0o 2022-04-23 08:57:45 +08:00 via iPhone #2 #3 OP 说的 command 补全和 shell 补全应该是不一样的。 类似于 $ openssl ran 补全 rand ,这是 shell $ openssl > ran 这类补全我一直以为是程序处理的 |
5 lijiangang886 2022-04-23 09:07:51 +08:00 可能跑题,一个栗子,kubectl 的命令行补全是它自己提供的一个一万多行( bash 版本)的补全脚本,然后 shell 来 source 这个脚本 https://kubernetes.io/docs/reference/kubectl/cheatsheet |
![]() | 6 kkhaike 我的项目一般都用 github.com/urfave/cli/v2 |
7 tlmn OP 回复上楼的回复,我的理解这确实是 shell 的补全,但又感觉说是 shell 不太合适,毕竟是程序自己实现的补全,因此记录为命令行补全。 |
8 tlmn OP @0o0O0o0O0o 对的,我需要的就是这种程序处理的补全,希望看看有没有自动化实现的库,只需要定义命令,其它的交由库去实现。 |
![]() | 10 SenLief 2022-04-23 13:09:18 +08:00 我的理解你可能需要的是 cli 的补全。 看下这个库符不符合。https://github.com/c-bata/go-prompt |
![]() | 13 kkhaike 2022-04-23 17:22:52 +08:00 |
![]() | 14 kkhaike 2022-04-23 17:23:41 +08:00 |