我正在为我的周末作业实现一个 linux shell,但我在将通配符匹配作为 shell 中的一个功能实现时遇到了一些问题。众所周知,shell 本身就是一种完整的语言,例如bash、ksh 等。我不需要实现完整的功能,如控制结构、作业等。但是如何实现 *
?
快速分析得出以下结果:
echo *
列出当前目录下的所有文件。这是 shell 的唯一逻辑表现吗?我的意思是,不考虑 bash 的语言特定特性,这是 shell 内部所做的吗?将 *
替换为当前目录中与模式匹配的所有文件?
我也听说过 Perl Compatible Regular Expression ,但使用第三方库似乎很复杂。
有什么建议、链接等吗?对于 bash,我也会尝试查看源代码。
最佳答案
这称为“globbing”,执行此操作的函数名称相同:glob(3)
关于c - 在 shell 原型(prototype)中实现 globbing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793293/