【发布时间】:2011-01-25 12:09:55
【问题描述】:
我正在为我的周末作业实现一个 linux shell,但我在将通配符匹配作为 shell 中的一项功能实现时遇到了一些问题。众所周知,shell 本身就是一门完整的语言,例如bash、ksh等。我不需要实现控制结构、作业等完整的功能。但是如何实现*?
快速分析得出以下结果:
echo *
列出当前目录中的所有文件。这是shell唯一合乎逻辑的表现吗?我的意思是,不考虑 bash 的特定于语言的特性,这就是 shell 在内部所做的吗?将* 替换为当前目录中与模式匹配的所有文件?
我也听说过 Perl Compatible Regular Expression ,但使用第三方库似乎很复杂。
有任何建议、链接等吗?对于 bash,我也会尝试查看源代码。
【问题讨论】:
-
那些不是正则表达式,而是通配符。例如。
*不是一个有效的正则表达式,因为*是一个限定符。这也称为globbing(一种模式匹配)。 -
“通配符”。西红柿,这就是我的意思,外卡。