shell中的通配符和转义字符

通配符与转移字符
通配符:
所谓通配符,指的是,一种文件名的样式,可以来对比文件名,以此找到相符的文件.它的妙处,在于不必知道全部的文件名,只要用通配符组成一个样式作为命令执行的对象,即可以完成工作.(假如我们下载一个电子书,如果该电子书名字不太规范,下载后找不到路径,我们就可以在windows下用*.txt来缩小找寻范围).
有两个通配符的符号一定要了解一点:
*:代表任意的字符串,可以是空字符串.
?:代表一个字符串,但不可以为空.
举例:列出/usr/bin 下所有的文件
ls -al /usr/bin/*
举例:列出/usr/bin下 文件名长度为4的文件
ls - al /usr/bin/????
再举一些例子说明通配符的用法,假设工作目录是/usr/bin
zip*:凡是文件名前3个字符是zip的均符合.例如:zip,zipgrep.
*zip:凡是文件名末尾3个字是zip的都符合.例如zip,gunzip,unzip等
*zip*:凡文件名含有zip的都符合,例如:zip,bunzip2;
*:任意文件名都可以
z*e:第一个字符是z最后一个都是e
ls????:长度为6前两个字符为ls的都是

转义字符:
反斜线(\)是bash的转义字符,引用转义字符的目的是让后接的字符恢复其原来作为单纯字符的用途,也就是除去特殊字符的作用.   
举例:九九表
echo 9*9=81
bash会把*视为通配符,而以工作目录中所有的文件名取代它,这就和原来要显示的目的不同了.
用一对单引号包含特殊字符或者整个字符串
echo 9 "*" 9 =81
echo '9 * 9 = 81'
使用转义字符
echo 9\*9 = 81
特别要注意的是:
一对单引号不可以出现单引号,就算转义字符\也不行
echo 'This is Jack's book.'
echo 'This is Jack\'s book.'
上述指令会造成bash认为命令还没有输入完成,因为bash会把第一个和第二个单引号自动匹配,最后一个单引号没有伴的情况下,bash认为没有输完命令,就可能会出现>提示符,等待用户继续输入.
解决的方法:使用转义字符并去掉最外围的一对单引号,或改用双引号,或使用接续的方式.
如下所示:
echo This is Jack\'s book.
echo 'This is Jack's book.'
echo 'This is Jack'\''s book.'
续行符号
转义字符唯一的例外是:\的后方,若接续的是换行字符(不可见字符),即先键入\,再按回车键,则bash会将它视为'续行字符',也就是上下输入的两行,视为一行(有点像汉语的逗号,表示一句话没有说完).
echo 'line 1\
        line 1 too'
显示结果line 1 line 1 too
续行字符,经常用把一条很长的指令分成多行.             



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值