DDR爱好者之家 Design By 杰米

特殊符号及其转义

大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数中含有特殊字符, 比如说*, *我们知道,是表示任意多个(包括0个)任意字符. 那么shell的工作方式是,它会对这些特殊字符进行预先处理, 然后再将处理的结果传给那个命令.

比如说,如果你的当前目录有file, file1, file2 三个文件, 那么当你执行cat file*的时候, shell会对参数部分file*进行预先处理, 由于*表示任意多个(包括0个)任意字符,那么处理的结果便是file file1 file2,接下来,shell再将这个结果, 即file file1 file2传递给cat命令, 所以你看到的结果跟直接执行cat file file1 file2是一样的, 那就是三个文件的内容都显示在命令行终端.

实际上,我们有办法看到shell处理的结果是什么,或者说真正执行的命令是什么样子的, 那就是在你要执行的命令之前加上echo.
比如说,在上面的目录下,你执行echo cat file* ,  那么你将看到

cat file file1, file2

上面那条命令,就是经过shell对参数的处理之后,真正执行的命令.

但是很多时候,我们希望传递给这些命令的,就是这些参数本身, 比如说,你当前目录下有一个文件的文件名就叫test*, 同时还有另外一个文件, test1. 而你只想看test*的内容, 这时候,如果你执行

cat test*

的话,那么test*和test1的内容都会被显示出来,这时候怎么办呢"")转义: 用双引号把参数括起来

在上面的例子中,这三种方法都是有效率的,也就是说,下面的三个命令都能达到目的:

  1. cat test\*
  2. cat 'test*'
  3. cat “test*”

三种转义方法的范围

在shell中,特殊字符是非常多的,而以上提到的三种转义方法的范围也不尽相同,其中第一种方法的范围是最广的,几乎可以对所有的特殊字符进行转义,常见的用法是把\放在一个命令行的最后,这样一个很长的命令就可以分为两行或者更多行写. 比如

echo this is a very long line

将显示成

this is a very long line

在这里,其实就是\把换行符转义了,让它失去了换行的意思,同时阻止命令立刻执行.

第二种转义(单引号)的范围比第一种小,它可以阻止命令行立刻执行,但是它不能让换行符失去换行的意思. 所以

echo 'hello
world'

将显示成

hello
world

第三种转义(双引号)的范围又比第二种小,单引号可以转义"`", 而双引号不行. 在shell中, "`"中间的东西将被视为命令替换. shell对参数进行预先处理时,将把两个"`"中间的东西当做shell命令进行执行,再将执行结果替换掉他们本身. 举个例子:

echo today is `date`

将显示

today is Mon Oct 12 16:14:16 CST 2015

当然,具体的日期跟你执行这条命令的时期有关. 总之,意思你应该明白了. 再回到原来的问题,我们说单引号可以转义"`", 而双引号不行, 意思就是,单引号之间的"`"将失去它的特殊含义,而双引号之间的"`"将依然有特殊含义,所以

echo 'today is `date`'

将显示

today is `date`

echo “today is `date`”

将显示

today is Mon Oct 12 16:23:23 CST 2015

常见的一些特殊字符

  1. * 任意个任意字符
  2. "color: #ff0000">总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。