通配符和转义字符
通配符:
* :代表任意字符串
?:代表一个字符,但不可为空
例:
ls /usr/bin/* 列出指定目录下的所有文件
ls /usr/bin/??? 列出指定目录下文件名长度为3的文件
ls *zip*
ls py??o??
转义字符:
:使后接的字符恢复其原来作为单纯字符的用途,即出去特殊字符的作用
[root@localhost ~]# echo 9*9 = 81
echo: No match.
[root@localhost ~]# echo 9*9=81
9*9=81
[root@localhost ~]# echo '9*9 = 81'
使用单引号也行,但单引号内不能出现单引号就算有转义字符也不行
9*9 = 81
[root@localhost ~]# echo 'this is jack/s cat'
this is jack/s cat
[root@localhost ~]# echo 'this is jack's cat'
Unmatched '.
[root@localhost ~]# echo this is jack's cat 正确的用法应该是以下三种
this is jack's cat
[root@localhost ~]# echo "this is jack's cat"
this is jack's cat
[root@localhost ~]# echo 'this is jack'''s cat'
this is jack's cat
转义字符还可以作续行符号使用:
[root@localhost ~]# echo this is line 1
? line 1 too~
this is line 1 line 1 too~
双引号 ""
除了$、``(后引号)和转义字符外,双引号内的所有字符将保持字符本身的 含义而不被
bash解释。$和``在双引号内,如果不被转义字符()转义,将无条件的 保持bash下的特殊含
义,而转义字符()是有条件的。转义字符只有后跟$、``、双 引号、和换行符五种特殊字符
时才具有bash下的特殊含义:转义,换句话说,双引 号中只有以上五种字符可以被转义。
例:
[root@localhost ~]# cat test1
#!/bin/bash
Var1=123
Var2=456
echo "this is $Var1,and this is $Var2"
echo "today is `date`, i want to go shopping"
[root@localhost ~]# ./test1
this is 123,and this is $Var2
today is 2011年 07月 24日 星期日 04:50:51 EDT, i want to go shopping
单引号 ''
单引号内的所有字符都保持它本身字符的意思,而不会被bash进行解释
例:
[root@localhost ~]# cat test2
#!/bin/bash
Var1=123
Var2=456
echo 'this is $Var1,and this is $Var2'
echo 'today is `date`, i want to go shopping'
[root@localhost ~]# ./test2
this is $Var1,and this is $Var2
today is `date`, i want to go shopping