Chinaunix首页 | 论坛 | 博客
  • 博客访问: 355025
  • 博文数量: 78
  • 博客积分: 2222
  • 博客等级: 大尉
  • 技术积分: 745
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 10:48
文章分类

全部博文(78)

文章存档

2012年(7)

2011年(33)

2010年(38)

分类:

2010-09-24 11:23:00

&&, ||
在执行某个命令时,有时需要依赖于前一个命令是否执行成功.例如,如果希望将一个目录中的文件全部拷贝到另外一个目录中,然后删除源目录中的全部文件.在删除之前,希望能够确信拷贝成功.否则就有可能丢失所有的文件.
1.使用&&
    使用&&的一般形式为:
    命令1 && 命令2
    这种命令执行方式相当地直接,&&左边的命令返回真后,&&右边的命令才能够被执行.
2.使用||
    使用||的一般形式为:
    命令1 || 命令2
    ||的作用有一些不同.如果||左边的命令末执行成功,那么就执行||右边的命令.
3.用()和{}将命令结合在一起
    如果希望把几个命令合在一起执行,shell提供了两种方法,既可以在当前shell也可以在子shell中执行一组命令.
    为了在当前shell中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令用圆括号括起来.它的一般形式为:
    (命令1;命令2;...)
    如果使用{}来代替(),那么相应的命令将在子shell而不是当前shell中作为一个整体被执行,只有在{}中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中,否则在当前shell执行.它的一般形式为:
    {命令1;命令2;...}


通配符
当在使用命令行时,有很多时间都用来查找所需要的文件,shell提供了一套完整的字符串模式匹配规
则,或者称之为元字符,这样就可以按照所要求的模式来匹配文件.还可以使用字符类型来匹配文件名.
1.使用*
    使用星号*可以匹配文件名中的任何字符串,在下面的例子中,给出文件名模式app*,它的意思是文
件名以app开头,后面可以跟随任何字符串,包括空字符串:
    *也可以用在文件名模式的开头,如:
    ls *.doc
    匹配所有以.doc结尾的文件名.
    *还可以用在文件名的当中,如:
    ls cl*.sed
    用于匹配所有以cl开头,后面跟任何字符串,最后以.sed结尾的文件名.
2.使用?
    使用可以匹配文件名中的任何单个字符,如:
    ls ??R*
    文件名以任意两个字符开头,接着是R,后面跟任何字符的文件.
    ls conf??.log
    文件名以conf开头,中间是任意两个字符,最后以.log结尾的文件.
    ls f??*s
    所有以f开头,中间是任意两个字符,后面跟随任意字符串,并以s结尾的文件名.
3.使用[...]和[!...]
    使用[...]可以用来匹配方括号[]中的任何字符.在这一方法中,还可以使用一个横杠-来连接两个
字母或数字,以此来表示一个范围.
    ls [io]*
    列出以i或者o开头的文件名
    ls log.[0-9]*
    匹配所有以log.开头,后面跟随一个数字,然后可以是任意字符串的文件名.
    ls log.[!0-9]*
    表示非数字开头的字符串. 
    为了列出所有以大写字母开头的文件名,可以用:
    ls [A-Z]*
    为了列出所有以小写字母开头的文件名,可以用:
    ls [a-z]*
    为了列出所有以数字开头的文件名,可以用:
    ls .*
阅读(932) | 评论(0) | 转发(0) |
0

上一篇:Bash 测试和比较函数

下一篇:输入输出

给主人留下些什么吧!~~