每⽇linux命令学习-引⽤符号(反斜杠,单引号,双引号)
引⽤符号在解析器中保护特殊元字符和参数扩展,其使⽤⽅法有3种:反斜杠(\),单引号(’‘),双引号(“”)。
单引号和双引号必须匹配使⽤,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要⽤于信息的原样输出,防⽌任何变量的扩展,双引号(软转义)允许变量扩展、转义符和命令替换。单引号保护双引号,双引号保护单引号。
1. 反斜杠
反斜杠通过解析器将1个字符转化为引⽤符号或转义。
1)在单引号内使⽤反斜杠,反斜杠不会被解析,保持原样输出。
2)在双引号内使⽤反斜杠,主要⽤于美元符号($),反单引号(``),双引号(""),单引号('')的输出,以及转义符的解析,其中单引号的输出中,反斜杠和双引号不能同时使⽤。
3)不使⽤单引号和双引号(如:echo \,输出为空),则反斜杠可以被看做⾃动忽略。
2. 单引号
1)单引号内不允许任何变量、元字符、通配符、转义符的解析,均被原样输出。
2)使⽤双引号或反斜杠转义可显⽰输出单引号,但是双引号和反斜杠不能被同时使⽤。
如命令:echo “\'”,输出结果会为(\'),⽽不是(')
3)可解析正则表达式,与sed和grep命令配合使⽤
3. 双引号
保护特殊元字符和通配符不被shell解析,但是允许变量和命令替换,以及转义符的解析。
4. 附录
在此顺便学习⼀下linux常见的特殊字符,包括通配符、转义符和元字符。
linux登录命令4.1 通配符(wildcard)
通配符实际上是⼀种shell实现的路径扩展功能,当shell在“参数”中遇到通配符后,会将其当做路径或⽂件名在磁盘上搜寻可能的匹配,以下表格中列出了⽐较常⽤的shell通配符,以供⼤家参考和学习。
字符含义实例
*匹配⼀个或多个字符a*b        a与b之间可以有任意长度的字符
匹配任意⼀个字符a?b        a与b之间必须也只能有⼀个字符
[list]匹配list中任意单⼀字符a[xyz]b  a与b之间必须也只能有⼀个[xyz]之间的字符
a[0-9]b  a与b之间必须也只能有⼀个0-9之间的数字字符a[!0-9]b a与b之间有且只有⼀个字符,同时字符不能为0-9
{string list}匹配字符串列表中的任⼀字符串a{abc,xyz,123}b a与b之间只能为abc或xyz或123
需要说明的是,通配符与正则表达式语句有些相似,但它与正则表达式不同,只能将其理解为shell特殊字符即可,⽽且只涉及*,?,[]和{}。
4.2 元字符(Meta)
字符说明
;命令分隔符,在前⼀个命令结束时,忽略其返回值,继续执⾏下⼀个命令
&后台运⾏命令,最⼤的好处是⽆需等待命令执⾏结束,就可以在同⼀命令⾏下继续输⼊命令
=变量名=值,为变量赋值。注意"="左右紧跟变量名和值,中间不要有空格
$变量值替换,"$变量名"替换为shell变量的"值",为避免在⽂本连接时混淆,请使⽤${变量名}
>输出重定向,prog > file 将标准输出重定向到⽂件(覆盖原⽂件内容)
>>输出重定向,prog >> file 将标准输出追加到⽂件
<;输⼊重定向,prog < file 从⽂件file中获取标准输⼊
|管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输⼊
()在⼦shell中执⾏命令,或⽤于运算,或⽤于命令替换($(command))
{}在当前shell中执⾏命令,或⽤在变量替换的界定范围(例如上⾯的${变量名}⽤法)
&&前⼀个命令执⾏成功后,才继续执⾏下⼀个命令。例:p1 && p2 ,若p1执⾏成功后,才执⾏p2,反之,不执⾏p2
||前⼀个命令执⾏失败后,才继续执⾏下⼀个命令。例:p1 || p2 ,若p1执⾏成功后,不执⾏p2,反之,才执⾏p2
!执⾏历史记录(history列表)中的命令,如!1
~⽤户主⽬录
4.3 转义符
shell提供的转义符有3中:单引号(''),双引号(""),反斜杠(\)。转义符已在上述内容中进⾏了详细介绍,在此只是对其做⼀个简单总结。
字符说明
''(单引号)硬转义,其内部所有的shell元字符、通配符等都不会被解析,⽤于参数的原样输出。注意,硬转义中不允许再出现单引号""(双引号)软转义,可⽤于保护元字符和通配符,但是允许变量和命令替换的扩展,也允许反斜杠转义符的解析
\(反斜杠)转义,保护元字符或通配符不被shell解析,主要⽤于双引号,单引号,反单引号和美元符号
与echo和sed连⽤时,常⽤的反斜杠转义字符如下表所⽰:
转义符意义
\a响铃字符
\b后退符,即删除前⼀个字符
\c输出不换⾏,与/n作⽤相反
\d以“星期、⽉、⽇”表⽰⽇期
\f换⾏,但光标仍停留在原处
\h或\H显⽰基本主机名或显⽰完整的主机名
\t或\T24⼩时或12⼩时制时间
\n输出换⾏
\r光标移⾄⾏⾸,并且不换⾏
\s当前shell的名称,如bash
\t插⼊Tab键
\u当前登录shell的⽤户名
\v Bash版本
\w当前⼯作⽬录
\W当前⼯作⽬录的基名
\\反斜杠\\,有⽆双引号,结果相同
\$美元符号$,有⽆双引号,结果相同
\"双引号“,有⽆双引号,结果相同
\'单引号’,不能与双引号同时使⽤
\`反单引号`,有⽆双引号,结果相同
\nnn插⼊⼋进制所代表的ASCII字符

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。