菜鸟笔记
提升您的技术认知

shell之转义字符\-ag真人游戏

转义字符

反斜线(\)是bash的转义字符,也叫逃逸字符或者转义字符。

我们想让 通配符,或者元字符变成普通字符,不需要使用它。那么这里我们就需要用到转义符了

实例:

[root@sande-lvs01 ~]# echo 9 * 9 = 81

9 1.txt anaconda-ks.cfg install.log install.log.syslog install.log.tar install.log.tar.zip zabbix-agent-3.0.4-1.el6.x86_64.rpm zabbix-agent-3.0.4-1.el6.x86_64.rpm.1 zabbix_agent.sh 9 = 81

[root@sande-lvs01 ~]# echo 9 '*' 9

9 * 9

[root@sande-lvs01 ~]# echo 9 '*' 9 = 81

9 * 9 = 81

[root@sande-lvs01 ~]# echo '9 * 9 = 81'

9 * 9 = 81

[root@sande-lvs01 ~]# echo 9 * 9 = 81

9 1.txt anaconda-ks.cfg install.log install.log.syslog install.log.tar install.log.tar.zip zabbix-agent-3.0.4-1.el6.x86_64.rpm zabbix-agent-3.0.4-1.el6.x86_64.rpm.1 zabbix_agent.sh 9 = 81

[root@sande-lvs01 ~]# echo 9 \* 9 = 81

9 * 9 = 81

[root@sande-lvs01 ~]#

特殊实例:

在一对引号中不允许出现单引号,转义字符也不行

[root@sande-lvs01 ~]# echo 'it is wolf's book'

> ^c

[root@sande-lvs01 ~]# echo 'it is wolf\'s book'

> ^c

[root@sande-lvs01 ~]# echo 'it is wolfs book'

it is wolfs book

[root@sande-lvs01 ~]# 

以上,bash会认为命令输入为完成,因为第一个引号和第二个引号自动配成一对,最后一个单引号在没得配的情况下,bash认为输入尚未完成,出现>等待命令继续输入。

解决办法

[root@sande-lvs01 ~]# echo "it is wolf's book"

it is wolf's book

[root@sande-lvs01 ~]# echo it is wolf\'s book

it is wolf's book

[root@sande-lvs01 ~]# echo 'it is wolf'\''s book.'

it is wolf's book.

一般特殊符号要出现必须用转义字符

\' \" \* \? \\ \~ \` \! \# \$ \& \( \) \| \[ \] \{ \} \; \< \> \^

续行符号

转义字符唯一的里外是:\的后方,若是接续换行(不可见字符),即先输入\,再敲回车。

[root@sande-lvs01 ~]# echo "wolf \

> wolf"

wolf wolf

[root@sande-lvs01 ~]# 

补充一下:

1、其实单引号也是转义字符---‘’---硬转义,引号内部所有的shell元字符、通配符、都会被关掉。

注意:硬转义中不允许出现‘(单引号,鸡上面的例子)

2、双引号:软转义,引号内部只允许出现特定的shell元字符,$用于参与代换 用于代替命令。

3、\后跟的是非元字符,与没有加\的效果一样

eg:echo '\a' 和echo "\a" 的输出都是 \a  而echo \a 的输出却是a

[root@sande-lvs01 ~]# echo '\a'

\a

[root@sande-lvs01 ~]# echo "\a" 

\a

[root@sande-lvs01 ~]# echo \a 

a

网站地图