shell通配符包括*?[]!

来源:互联网 发布:java苹果内购认证接口 编辑:程序博客网 时间:2024/05/01 10:18

* 

代表0个或多个字符 
? 
代表一个字符 
例子: 
ls 11*2?3 显示11开头的接着是若干个字符,最后是2加一个字符和3结束的文件 
[] 
可以理解为一个字符,与?的区别是[]里面的内容限定了这个字符的范围 
例子: 
[Cc]hange[Ll]og 
将与 Changelog、ChangeLog、changeLog 以及 changelog 匹配。在需要大小写匹配的时候,使用括弧通配符很有用。 
例子: 
ls /etc/[0-9]* 将列出 /etc 中以数字开头的所有文件。 
ls /tmp/[A-Za-z]* 将列出 /tmp 中以大写字母或小写字母开头的所有文件。 

功能与单引号类似, 
例子: 
rm 12/* 则只会删除12*,这里/代表起后面的字符是纯字符没有其他意思,这与C 语言里面的转义字符类似的。很自然的,如果要表示字符/,你必须使用//。 
[!] 
例子: 
rm myfile[!9] 将删除除myfile9 之外的名为 myfile 加一个字符的所有文件。 
‘’单引号 
例子: 
echo ‘[fo]*’ > newfile.txt 创建了包含字符串[fo]*的文件。 
如果echo [fo]* > newfile.txt 则 newfile.txt 里面不会有任何东西 
例子: 
如果用户目录下有12* 12333这么两个文件,那么 
rm 12* 会删除12* 和 12333 
rm ‘12*’ 则只会删除12* 
总结:用引号引起来则说明引号里面的是纯字符串无须进行通配符的相关处理

原创粉丝点击