百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> Unix shell 使用 Bash 中的 globstart 选项使用教程
分享文章到:

Unix shell 使用 Bash 中的 globstart 选项使用教程

发布时间:01/15 来源: 浏览: 关键词:
我们可以用一个神奇的通配符“**”(两个星号)在ls命令方便的遍历所有的目录和文件,本文我们来告诉你如何设置Bash的globstar选项后,使用这个神奇的通配符。

在使用一些命令时(如: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的说明提到只两次,说的都是同一件事情,如下:

 代码如下
Pathname Expansion
......
*      Matches any string, including the null string.  When the globstar shell option is enabled,  and  *  is
              used  in  a  pathname expansion context, two adjacent *s used as a single pattern will match all files
              and zero or more directories and subdirectories.  If followed by a /, two adjacent *s will match  only
              directories and subdirectories.
......
globstar
        If set, the pattern ** used in a pathname expansion context will match a files and zero or more directories
        and subdirectories.  If the pattern is followed by a /, only directories and subdirectories match.



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

 代码如下
#!/bin/bash
<pre lang="Bash">
function show()
{
        for i in **
        do
                echo $i
        done
}
 
cd /root/jay/
echo "------------------------"
echo "disable globstar option:"
# globstar is disabled by default
shopt -u globstar
show
echo "------------------------"
echo "enable globstar option:"
shopt -s globstar
show

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

[root@smilejay jay]# ./test_globstar.sh
------------------------
disable globstar option:
dir1
dir2
file1
file2
index.html
test_shopt.sh
------------------------
enable globstar option:
dir1
dir1/file3
dir2
dir2/file4
file1
file2
index.html
test_shopt.sh
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有3人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板