为经典的命令行工具增加一个壳:自动生成命令行参数的GUI界面

经典的命令行工具如 curl,ffmpeg,openssl。。。它们功能强大,但参数太繁杂
不知道有没有人已经做了这样的工作?
最早接触linux时,就感觉:
如果有这样的界面外壳,linux也就不会这么难以被普通人接受了。。。。
这些工具功能强大,但命令行参数太多太难记忆了,如果做成GUI也会很恐怖,更别说纯粹在一行里敲字母,所以有个openssl的梗图(见最后的长图)
而参数或设置,其实不外乎 单选、多选、输入文本(文字信息或文件名或目录路径)
理论上是可以提供一个 通用的设置界面(比如叫 g2c.exe),它的具体功能由一个配置文件(命令行程序名.gset)决定,专家用户预先编好配置文件,普通用户想使用openssl,就用g2c.exe打开openssl.gset,g2c.exe就出现梗图的设置界面(当然,应该更有层次和条理一些,才方便不同熟练程度的用户),设置好了可以保存为openssl.xxx.set,下次可以直接打开来用或稍微修改就使用:生成相应的命令行参数去执行。。。。
之前做过这样的通用子模块,不是生成命令行,而是给程序直接获取用户的设置。


【上图对应的gset

可设置内容	label
 普通文本(数值)
  设置内容1	text	ininame1	defaultvalue1
  设置内容2a内容内容sdfasf12341234	text	ininame2	defaultvalue2
 单选
  设置单选1	radio	ininame3	0	3	item11	item12	item13
  设置单选2	radio	ininame4	4	5	item21	item22	item23	item24	item25
  设置单选3	radio	ininame5	1	2	item31	item32
 多选1
  布尔选项11	check	ininame6	0	item6
  布尔选项12	check	ininame6	1	item7
  布尔选项13	check	ininame6	1	item8
 多选2
  布尔选项21	check	ininame6	0	item6
  布尔选项22	check	ininame6	1	item7
  布尔选项23	check	ininame6	1	item8


1 个赞

真有人会去背ffmpeg那一堆参数吗。。。
而且ffmpeg传参顺序很重要(影响结果),这种壳看上去的传参顺序是定死的。
我是要的时候直接翻手册,或者像别人流行的写好几个固定脚本解决特定需求

1 个赞

参数风格的兼容性是个问题。。。。
比如 ffmpeg还支持同样的参数重复出现,比如 -i a.mp4 -i b.mp4
顺序倒是一般无关,但个别情况的确是有关的,比较奇怪
这里又引申到另一个讨论:命令行参数的风格规则
个人觉得key=value(如url query、ini)规则最好,如: act=add pcount=3 p1=4 p2=1 p3=7
可惜unix开始都选择了: -act add -c 3 -p1 4 -p2 1 -p3 7 这样的规则

我是直接把常用的命令写在txt里保存,要用的时候稍微修改一下再复制到终端里。

1 个赞

GUI 可以代替一部分参数. 或者实现某些特定的功能.

如果要完全代替命令行, 就需要采取与命令行完全不同的交互方式.

比如 资源管理器代替传统的 Dir 文件显示方式和操作逻辑. 这种情况下, 其实已经与命令行无关了.

不过, 我是比较支持制作GUI的, 这对用户交互非常友好, 而且用户不需要关心实现过程和记忆各类命令和参数.

这个时候我就又要吹一下最简单易学,兼顾美观的能给命令行工具套壳的方案了。
那就是Python的gradio。如果命令行程序有Linux版本,你甚至可以用白嫖的服务器把它做成任意设备随时可以用的web App。

我個人的習慣是用PowerShell封裝一下。

dir与资源管理器不一样,后者需要 程序自己取得某些信息显示给用户看,再由用户在界面上选择,算是需要反复交互了。
dir、curl、ffmpeg都是一次参数输入就完成一次处理、输出。

另外,这个壳除了生成命令行参数,其实也可以生成一些服务的配置文件。
比如apache、nginx、各种数据库系统。。。。
这种配置文件很庞杂,手工编辑配置文本很容易改错一点导致无法启动服务!
不过,它肯定需要支持重复添加项目,像web网站和目录的设置都是可以任意多的。

会用的人看不上,不会用的人也写不出来 :sweat_smile:

1 个赞

肯定是专业人员写了给普通人用

还是太复杂了点,我的观点是直接把命令封装为API,这样不仅pc可以用,手机、平板、Linux都能用,甚至我喜欢的Excel也可以用。
我现在比如二维码生成,远程唤醒等,有兴趣也可以私聊我。

1 个赞

我进了一步,一般都是把 txt 改扩展名成 .bat (linux 里就改成 .sh),到时直接运行脚本就行了。

有趣的想法

我想到的是,解析 cli 工具 manual 里的内容输出 gui 的配置文件

根据 usage 里面的参数生成界面,kv 参数就是文本框,bool 参数就是单选/多选,同类参数形成一个 group
根据 examples 里面的参数生成常用配置,类似 profile 一样可以加载

感觉有人会写出类似工具

1 个赞

NewBing 找的:

dotxyteam/CommandUI: Create GUI wrapper for any command line tool (github.com)

chriskiehl/Gooey: Turn (almost) any Python command line program into a full GUI application with one line (github.com)

我觉得一定已经有大牛有这个想法,并有实现了的工具。只是难找到

找到个最近的

就你这样的方案跟直接用命令行有什么区别吗0.0 ,, 参数设置该不会的还是不会,懂参数怎么设置的应该会觉得命令行更好用

常用的命令组合,肯定是写个批处理更省事啊。

问 AI 其实更好用……

搜了一下,gradio是做成web后台。。。。这好像也算一种思路,只是间接了一层

直接根据manual或usage生成界面,倒是一个自动化的做法。
只是复杂的参数需要人为 分组分类(相关的才放一起)分层(高级的用法放后面,普通人不用都可以),才更合理、更方便使用,
否则就像 最开始那个openssl的gui,只是避免了记忆,帮助仍然不够大