您的位置:首页 > 运维架构 > Linux

Linux下的通配符和特殊符号

2016-11-08 00:21 260 查看
   在 bash  操作环境中有一个非常有用的功能,那就是通配符 (wildcard) !有了wildcard利用 bash 处理数据就方便了!底下我们列出一些常用的通配符: 

        符号                                   意义
           *                         代表『 0 个或无穷多个』任意字符

           ?                        代表『一定有一个』任意字符

          [ ]                        同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』

        [ - ]                       若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字

        [^ ]                       若中括号内第一个字符为符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,要是非 a, b, c 的其他字符就行。

    接下来我们用通配符来玩些东西吧!首先,利用通配符配合 ls 找檔名看看:

<span style="font-size:14px;">[root@www ~]# LANG=C    <==由于和编码有关,先设定一下语系
范例一:找出 /etc/ 底下以 cron 为开头的档名
[root@www ~]# ll -d /etc/cron*    <==加上 -d 是为了仅显示目录而已
范例二:找出 /etc/ 底下文件名『刚好是五个字母』癿文件名
[root@www ~]# ll -d /etc/?????    <==由于 ? 一定有一个,所以五个 ?
范例三:找出 /etc/ 底下文件名中有数字的文件名
[root@www ~]# ll -d /etc/*[0-9]*  <==记得中括号左右两边均需 *
范例四:找出 /etc/ 底下,档名开头非为小写字母癿文件名:
[root@www ~]# ll -d /etc/[^a-z]*  <==注意中括号左边没有 *</span>


    除了通配符之外,bash 环境中的特殊符号有哪些呢?底下我们先汇整一下:

    符号                    内容

      #                     批注符号:这个最常被使用在 script 当中,规为说明!

      \                      跳脱符号:将『特殊字符或通配符』还原成一般字符

      |                      管道 (pipe):分个两个管道命令的界定;

      ;                      连续指令下达分隔符: (注意!与管道命令不相同)

     ~                      用户家目录

     $                      取用变量前导符:亦即是取用变量前需要加的变量取代值

     &                      工作控制 (job control):将指令变成成背景下工作

     !                        逻辑运算意义上的『非』 not 癿意思!

     /                        目录符号:路径分隔的符号

    >, >>                 数据流重导向:输出导向,分删是『叏代』不『累加』

    <, <<                 数据流重导向:输入导向 (这两个留待下节介绍)

     ' '                       单引号不具有变量置换的功能

    " "                       具有发量置换的功能! 

    ` `                       两个『 ` 』中间为可以先执行的指令,亦可使用 $( )

    ( )                      在中间为子 shell 的起始不结束

    { }                      在中间为命令区块的组合!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  通配符