我注意到很多 bash 实用程序(例如,,,)ls
都cp
使用正则表达式和模式匹配。例如 * [] {} 等符号。mv
grep
但是,我发现这在某些方面与我在互联网上找到的其他正则表达式教程有所不同。这些实用程序是否遵循特定的标准或某处的完整快捷方式列表?
谢谢
答案1
虽然类似,但你所指的通配符模式不是正则表达式;它们是全局模式在此背景下,贝壳图案。它们由 shell 本身扩展,而不是通过诸如 、 等命令ls
。cp
需要澄清的是,这些命令实际上不是“bash 实用程序”;它们是可以通过以下方式执行的程序:任何壳。
当在 shell 中输入命令时,shell 会解析标记(单词),它所做的事情之一就是扩展全局模式转换为适当的文件名。在最常见的情况下,这些文件名随后由 shell 作为所调用命令的参数列表提供。
标准化
这些 shell 模式已经针对类 Unix 操作系统进行了标准化POSIX 规格:模式匹配符号。
一些 shell(Bash 和 Korn shell)更进一步,扩展了这些模式以实现扩展的 glob。有关详细信息,请参阅格雷格的维基。