我正在为我的周末作业实现一个linux shell,并且在实现wilcard匹配作为shell中的一项功能时遇到了一些问题。众所周知,贝壳本身就是一种完整的语言,例如bash,ksh等。我不需要实现像控制结构,作业等完整功能。但是如何实现*
?在shell原型中实现globbing
快速分析为您提供了以下结果:
echo *
列出了所有当前目录下的文件。这是shell的唯一逻辑表现形式吗?我的意思是,不考虑bash的语言特定功能,这是一个shell在内部执行的操作吗?将*
替换为当前目录中与该模式匹配的所有文件?
另外我听说过Perl兼容正则表达式,但它似乎很复杂,使用第三方库。
任何建议,链接等?我也会尝试查看源代码,以查找bash。
这些都不是正则表达式,而是通配符。例如。 `*`不是有效的正则表达式,因为`*`是*限定符*。同样在此被称为[通配符](http://en.wikipedia.org/wiki/Glob_(编程))(模式匹配的一种形式)。 – Joey 2011-01-25 12:11:50
“通配符”。番茄tometoes,这就是我的意思,通配符。 – aasthetic 2011-01-28 16:36:47