本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/05/23/bash%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E6%89%A9%E5%B1%95/
摘要
本文主要讲述了:
- dotglob
 - /
 - globstar
 
正文
在分词之后,bash 会在每个单词中检索*、?和[。如果出现了这其中的任意一个字符,该单词就会被视为模式,而后进行模式匹配。关于 bash 中的模式匹配请参见bash中的模式匹配和bash中的模式匹配扩展。
- 如果模式匹配匹配到了文件名,则该单词被替换为按照字母顺序排列的文件名列表
 - 如果模式匹配没有匹配到文件名,但启用了 shell 的
nullglob选项,则删除该单词 - 如果模式匹配没有匹配到文件名,且禁用了 shell 的
nullglob选项,则保留该单词 
dotglob
当模式匹配被用于文件名扩展时,除非启用了 shell 的dotglob选项,否则必须显式匹配文件名开头的.。
示例:
- 禁用了 shell 的
dotglob选项之后,*不匹配以.开头的所有文件名 - 禁用了 shell 的
dotglob选项之后,?不匹配. 
但即使启用了 shell 的dotglob选项之后,.和..(目录)依旧需要显式匹配。
示例:
- 启用
dotglob选项之后,*匹配以.开头的所有文件名,但*不匹配.和..(目录) 
/
在匹配文件名时,/(路径段分隔符)始终需要显式匹配。
示例:
*不能匹配子目录下的文件,只能匹配 CWD 的所有文件和所有子目录*/匹配 CWD 的所有子目录*/*匹配 CWD 的所有子目录下的所有文件
globstar
当启用了 shell 的globstar选项之后,**能递归匹配所有文件、零或更多目录与子目录。**/只能递归匹配零或更多目录与子目录。
1  | 
  | 
示例:
**/*相当于**,递归匹配所有文件、零或更多目录与子目录**/*.md递归匹配以.md结尾的所有文件、所有以.md结尾的零或更多目录与子目录
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/05/23/bash%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E6%89%A9%E5%B1%95/
本文对你有帮助?请支持我
      
      - 本文链接: https://jsweibo.github.io/2019/05/23/bash%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E6%89%A9%E5%B1%95/
 - 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。