你可以说我是一个梦想家,但想象一下这样一个世界:我们使用的“每个”CLI 工具都可以选择生成稳定的输出(例如 JSON)。以编程方式使用ls
、free
、df
、等 CLI 工具fdisk
将变得轻而易举。 GNU 标准化的方式参数语法约定,它可以按照以下方式标准化输出吗
“--json
生成根据 JSON 规范格式化的特定于工具的报告”?也许这已经被尝试过但被拒绝了?如果没有,我们如何推动这样的事情?
答案1
您可以在专门针对您感兴趣的特定工具的邮件列表上提倡这一点。
可用的 GNU 邮件列表可在此处找到:https://lists.gnu.org/mailman/listinfo/
如果您感兴趣的一个或其他工具没有由任何 GNU 邮件列表表示,那么您必须调查谁在维护它以及是否有他们维护的关联邮件列表。
请注意,如果您可以提供实现该功能并且有效的源代码补丁,那么对开源项目的功能请求被接受的机会就会更高。
答案2
有尝试过吗?
是的。不仅尝试过,而且完毕。存在一个交互式 shell,其中(shell 内)管道是对象流而不是字节流,并且 shell 变量是具有可访问属性的对象,不需要解析结构化文本或字段分隔符。
% 正常运行时间 | awk '{print $3;}' 2 % % 工作人员 电源外壳 6.2.0 版权所有 (c) Microsoft Corporation。版权所有。 https://aka.ms/pscore6-docs 输入“帮助”以获得帮助。 PS /var/lib/dpkg> (Get-Uptime).TotalDays 2.98334490740741 PS /var/lib/dpkg> $U = 获取正常运行时间 PS /var/lib/dpkg> echo $U.TotalDays 2.98353009259259 PS /var/lib/dpkg> 退出 %
你在考虑重新审视这个问题上已经落后了几十年。这个特殊的例子并不是人们第一次考虑重新设计命令行 shell。几十年前,M. Wall 和 M. Joy 等人就对这个问题有了一些想法。
% tcsh /var/lib/dpkg> 设置 u=(`正常运行时间`) /var/lib/dpkg> 回显 $u[3] 2 /var/lib/dpkg> 退出 出口 % % perl << "." $U = `正常运行时间`; $U =~ /.*?up(.*?)/; 打印“$1\n”; 。 2 %
你的思维错误:
- 这种事情都是通过唠叨别人来完成的。
- GNU 工具及其所有现存的非标准扩展,是标准。
- 您只有一套工具。