bash通配符与其他特殊符号-55

来源:互联网 发布:手游源码出售 编辑:程序博客网 时间:2024/06/05 00:27

bash通配符与其他特殊符号

        一、bash通配符
            1、’?’:匹配一个任意字符

            2、’*’:匹配0个或任意多个任意字符,也就是可以匹配任何内容

            3、'[]’:匹配中括号中任意一个字符。
            例如:
            [abc]代表一定匹配一个字符,或者是a,或者是b,或者是c。

            4、'[-]’:匹配中括号中任意一个字符,’-‘代表一个范围。            
            例如:
            [a-z],代表匹配一个小写字母。

            5、[^]:逻辑非,表示匹配不是中括号内的一个字符。
            例如:[^0-9]代表匹配一个不是数字的字符。

            其实我们在讲搜索命令find的时候曾经接触过这些通配符。

            好的我们举几个例子:
            [root@localhost ~]# cd /tmp/
            大家都知道/tmp目录里都是临时文件,可以全部删除,那么我们进入到这个目录
            [root@localhost tmp]# rm -rf *
            这样就可以把这个目录下的所有文件都给删除了。
            也就是说如果我们想清空一个目录里的文件,一个一个的删除显得费劲,所以我们就用通配符’*’就可以把里面的所有文件都给删除掉了,挺方便的。
            但在删除之前一定要先确定是不是在当前目录下,而且一定不能错误的写成/*,这样就把根目录下所有文件都删除了,就麻烦了。

            再来一个例子:
            假如一个目录下有如下几个文件:
            abc,abcd,1abc,1234
            那么我们用ls *abc会显示那几个文件呢?
            因为*代表所有内容,所以会匹配出abc,1abc两个目录,为什么abcd没有匹配出来呢?因为*abc代表后三个字符必须是abc,前面是任意字符,而abcd不符合。如果想让abcd也匹配出来那就需要这么写:
            ls *abc*。

            那么如果我们用ls ?abc会显示哪个文件呢?
            是1abc,因为?代表必须匹配一个字符而且只能匹配一个字符,只有1abc符号要求。

            ls [0-9]abc,输出1abc
            ls [0-9],输出 1234
            大家自己多操作联系,其实很容易理解的。

        二、bash中其他特殊符号
            1、”:单引号。

            还是举例说明:
            A、首先我们演示一下单引号和双引号的区别:
            首先我们给name字符串赋值,比如:
            [root@localhost ~]# name=mageo
            赋值命令就是把某一个值赋给某个变量,只要调用这个变量就会输出对应的值,后面我们还会讲到,这里大家只要理解大概就可以。
            然后我们用单引号来调用变量name:
            [root@localhost ~]# echo ‘$name’
            结果是不会输出mageo的,会原封不动的把$name输出,因为在单引号里所有特殊符号都失去了意义。
            那么我们用双引号试试:
            [root@localhost ~]# echo “$name”
            他就会正常输出变量的值了,如图:
            bash里单双引号的区别
            这就是单引号和双引号的区别。

            B、我们再来举例说明反引号和$()的区别。
            两个符号都是用来调用系统变量的。比如date就是系统变量,如下:
           

            注意这个和上面的变量赋值方法不一样,前面的是把一个常量值赋值给一个变量,而这里是把一个变量又赋值给一个变量。
            [root@localhost ~]# echo $abc 就会输出当前的时间。如图:
           bash反引号调用变量
            但是平时还是建议大家不要用这个符号来调用系统变量,为什么呢?其实大家应该感觉到了,就是这个符号太容易和单引号混淆,反引号就是键盘esc下面的那个键。而单引号是回车左边的键,如果混淆了就会引起没必要的麻烦。

            所以建议大家用另外一个调用变量的方法,就是:$(系统变量名),如下:
            [root@localhost ~]# abc=$(date)
            这样我们同样可以用echo $abc来输出当前时间,如图:
            bash调用变量方法$()

            我们甚至还可以这么玩:
            [root@localhost ~]# echo $(ls)就会输出ls执行的结果.

            [root@localhost ~]# echo “$(date)”
            [root@localhost ~]# echo ‘$(date)’
            大家试试,看有什么不同。

            C、#代表注释一行,没什么说的。
            $代表调用变量,比如想调用name变量,就必须在name前加$符号。

            转义符\也非常简单,比如:
            [root@localhost ~]# echo \$name
            这样就不会输出变量值了,而是会像加了单引号一样原封不动输出\后面的。
            因为经过\转义后$就失去了特殊符号的作用了。
            bash转义符的作用
            大家对比一下。

            这节课我们学习了通配符,*?[]
            还学习了:单引号,双引号,反引号,转义符,变量引用符号等
            虽然很零碎,但是只要大家多练习,还是很容易就能掌握的。

    本教程原创作者:mageo,出自每集博客,尊重作者劳动,转载请注明出处:http://www.ql2015.cn,谢谢!

0 0
原创粉丝点击