使用Bash中的globstart选项

在使用一些命令时(如:ls、git),刚好遇到一些需求是想很方便地遍历所有的目录和文件,后来经过搜索,终于找到了一个“神奇”的通配符“**”(两个星号),在设置了Bash的globstar选项后,**就可以匹配任当前何目录(包括子目录)以及其中的文件。所以,了解了一下globstar这个选项,当未设置globstar时,**通配符的作用和*是相同的,而设置了globstar后,**的匹配范围不同了(更广一些)。注意:globstar是Bash 4.0才引入的选项,之前的老版本是不支持的,使用“bash –version”可产看当前使用的Bash的版本。

关于glob这个词,我也觉得好奇,中文不好解释,大致就是“对通配符展开”的意思,如下的英文吧:
In shell-speak, globbing is what the shell does when you use a wildcard in a command (e.g. * or ?). Globbing is matching the wildcard pattern and returning the file and directory names that match and then replacing the wildcard pattern in the command with the matched items.

在bash的man page中,对globstar的说明提到只两次,说的都是同一件事情,如下:


写了个测试和学习globstar的shell脚本如下:

执行上面测试globstar的shell脚本,看它的输出结果,就很容易理解globstar了,如下:

参考资料:
http://www.linuxjournal.com/content/globstar-new-bash-globbing-option
bash4引入的新feature:http://wiki.bash-hackers.org/bash4
http://wiki.bash-hackers.org/syntax/expansion/globs

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注