[240610] 5 种 Non-Posix Shell 在 x-cmd 上的支持 | Perl 发布 5.40.0

5 种非 Posix SHell - nushell,fish,xonsh,csh,pwsh

利用三天假期,我开始动手增加了对各种 Non-Posix shell 的 x-cmd 支持。
在这个过程中,边学边用了 nushell / fish / xonsh / csh 。

进展比较顺利,现在 nushell/fish/xonsh/csh 可以调用 x , 以及 c 启动我们的快速路径切换,以及 @gpt, @gemini, @o 进行 LLM Agent 的调用。相关的工作会在 v0.3.10 发布;但注意,对非 posix shell 的支持仍是 beta 特性。

nushell

nushell 的流式设计与 jq 很接近,并引入大量 函数编程 的理念 – 彼之砒霜,汝之蜂密 。

我对此非常感兴趣,nushell 以数据流为目标,与 x-cmd 下一步的设计理念非常契合。

fish

fish 设计很清爽,其成型较晚,集各 shell 之大成 但仍能保持语法的简明。
虽然近十年不时注意 fishshell 的新闻,但也前天才发现开始 fish 也开始 rust 化,这是一个好的兆头 – 重写这个行为本身就会向该项目注入新的活力 – 至少,我们可以期待 portable fish 的出现。

xonsh

python 的元素故然让人振奋,但整体看上来有点复杂。
也许站在 python 高阶用户的角度,这种复杂度毫无压力。

python 自带电池 的设计理念,使其很容易整合大量有趣的功能。xonsh 可谓这个流派的集大成者,python 发烧友切勿错过。

csh

虽然 Freebsd 的 default shell 是 poxis 的 bsh,但其 login shell 是 csh 。

在使用过程,发现 csh 以 word list 为首要数据假设的思路非常有趣 – 我现在算是想明白了,也许 bash 的作者因为不舍得这个特性,才导致复杂性剧增。

csh 支持 goto,但不支持 function – 对于有 eval 的动态语言,有限地解决这个问题也不算困难。也许在最早期的语言设计时, 最小化语言设计应该包含什么元素,仍是百花齐放,并无一致的共识。

不过,我遇到了一个问题,无法在不依赖外部文件的方式解决。就此问题我向 tcsh 官方发了 issue。
https://github.com/tcsh-org/tcsh/issues/108

pwsh

我们一直都通过 pwsh 模块,调用 powershell 以复用 windows 上已有的强大的命令行能力(系统信息的获取,scoop 安装以及增强)。

不过,由于 git-for-windows 上的 UNIX 路径转换 ,以及一些可能未知的设计细节( windows/posix 之间衔接的复杂性 ),我们会在七月份才开始 pwsh 的收尾工作。

Perl 发布 5.40.0

Perl 5.40.0 更新摘要

核心增强

  • 新增 __CLASS__ 关键字:class 特性中,方法、ADJUST 块和字段初始化表达式可以使用 __CLASS__ 关键字获取运行时类名,方便方法调度。 (参考 perlfunc 中的 __CLASS__)
  • 字段变量的 :reader 属性:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值