&&, || 通配符
时间:2010-09-24 来源:zhdrfirst
&&, ||
在执行某个命令时,有时需要依赖于前一个命令是否执行成功.例如,如果希望将一个目录中的文件全部拷贝到另外一个目录中,然后删除源目录中的全部文件.在删除之前,希望能够确信拷贝成功.否则就有可能丢失所有的文件.
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 .*
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 .*
相关阅读 更多 +