gpt4 book ai didi

javascript - 哪个 C 库具有执行 zsh 的递归 glob 的功能?

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:53 26 4
gpt4 key购买 nike

我写了一个 nodejs 绑定(bind)到 glob.h(npm install glob 来使用它)。

我很想支持zsh的花哨lib/**/*.js类型的东西,但我似乎无法弄清楚哪个库具有该功能。

我当然不想尝试自己实现它,我也不是在寻找任何聪明的编程难题解决方案。我只想要这样的东西:

#include <fancy_glob.h>
int do_fancy_glob (etc) { ... }

有什么指点吗?我很确定 Ruby 对此有绑定(bind),不是吗?


编辑:

我做了一些研究,发现了一些有趣的事情。

Guido Van Rossum(以 Python 着称)编写了一个实现,现在可以在 BSD 和其他一些 unix 上找到。它不包括所谓的“扩展”全局模式( ** 等)。当你做 #include <glob.h>在你的程序中,这很可能就是你将得到的。 man 3 glob描述了它的行为。

但是,据我所知,Bash、Zsh 和 Ksh 现在都有扩展的 glob 实现,都是从头开始编写的。 NetBSD 具有可识别的 GVR 实现的后代,其中添加了扩展的 glob。Ruby 已经在 dir.c 中实现了扩展的 glob。作为其标准库的一部分(绝对是用 C 编写的,而不是 ruby​​)。 Perl 似乎绑定(bind)或实现了所有现存的 glob 库,我想这是意料之中的。

在我发现的所有库中,NetBSD 似乎最接近我使用典型的非扩展 libc glob(3) 编写的代码,它的许可证最适合我的项目。

另一种方法是从头开始重写它。我这样做很好,但我似乎找不到任何明确的规范或测试套件。有什么建议吗?


编辑 2:我用 JS 重写了它。 https://github.com/isaacs/node-glob

最佳答案

我很确定 Ruby 自己会做这件事,而且很可能是 Ruby 代码在做这件事。除了解析字符串和遍历文件系统之外,实现它没有太多障碍。我不确定,但我认为 zsh 也没有为此使用库,它只是在 zsh 代码中。

关于javascript - 哪个 C 库具有执行 zsh 的递归 glob 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4686556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com