Linux通配符:[ ]与{ }的区别

目录

一、理论

1.[ ]

2.{ }

二、区别

1.[  ]括号内字符解释

2.{}括号内字符解释

三、实验

1.[ ]匹配文件名

2.{ }批量创建


一、理论

1.[ ]

[ ] 只能用于匹配文件名的场景。

2.{ }

{ } 无特定使用场景,但通常用于生成序列文件。在指令中使用{ }通配符,shell会先把{ }的内容按照解释方式翻译成一个或多个参数,再执行该含有多参数的指令。

二、区别

1.[  ]括号内字符解释

[ ] 内的字符只有两种解释方式:

(1)当[  ]内部是两个用短横线“-”连接的正序的单个字符(如[0-9],[a-z]),指令将匹配含有这两个字符之间(包括这两个字符)的所有字符的文件名。

       ①  ls file[0-9]

上述指令将会使linux系统列出磁盘上所有符合格式的文件(即文件名为file0或file1或file2或file3……或file9的文件)。

(2)当[  ]内部结构不能同时满足上述三个条件(用短横线连接、正序、单个字符),指令将会把[  ]内的每一个字符都当作无关系的单个字符看待。

      ①  ls file[1-10],将会匹配文件 file1 file- file0

      ②  ls file[1..9], 将会匹配文件 file1 file. file9

      ③  ls file[1,4,5],将会匹配文件 file1 file, file4 file5 

 

2.{}括号内字符解释

{  }内的字符有三种具有优先级的解释方式,按照优先级由高到低排列,分别如下:

(1)当{  }内部含有逗号","时,shell将会按照逗号把括号内的内容分割成几个字符串。

     ①  touch file{1,2,3}

       touch file1 file2 file3

      ③  cp file{,.bak}

        cp file file.bak

总结: 指令①与②等价,指令③与④等价。值得注意的是,当逗号分隔出的某个区间为空时(指令③),依旧按照正则表达式被解释为一个参数。指令③常常用于备份文件的创建。

(2)当{  }内部含有两个连续的小数点".."时,shell将会尝试将之解释为序列。

     ①  括号内部是由".."连接的两个数字时(不一定为单个字符,比如可以为7,18,29等等),shell会将之解释为这两个数字和其中间所有数字所组成的参数序列,比如,下列三条指令是等价的:

touch file{7..12}

touch file{12..7}

touch file7 file8 file9 file10 file11 file12

     ②  括号内部是由".."连接的两个字符时(必须为单个字符),shell会将之解释为在ASCII码表中这两个字符和其中间所有字符所组成的参数序列。值得注意的是,当其中一个字符为逗号","时,将按照优先级顺序,以(1)中的解释方式翻译。比如,下列第1)、2)和第3)、4)条指令分别是等价的:

      1)  touch file{,..?}

      2)  touch file file..?

      3)  touch file{,..5}

      4)  touch file file..5

    ③  当括号内部虽然含有"..",却不满足上述两种格式,shell将不把它解释为序列,而是将{xx..xx}作为一个整体接受为指令的一个参数,即按照下边的第三种解释方式解释。

(3) 当括号内部不含有",",也不满足".."的两种序列格式,shell将不对其进行翻译,而是将大括号及其内容作为一个整体看待。

     1)  touch file{abc}

     2)  touch file{aa..zz}

     3) touch file{}

 

三、实验

1.[ ]匹配文件名

(1)匹配file0到file9文件

2.{ }批量创建

(1)批量创建100个文件

(2)批量创建50个目录

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值