Linux:引号那些事
我们使用双引号的原因是—我们要把所有单词包括住,当作一个整体来对待。如果我们没有使用引号,那么bash解释器,就会将所有位于第一个单词后面的单词,解释为其他的命令(第一个单词被解释为命令)。
- 作者:linuxcommand来源:计算机与网络安全|2017-05-15 21:50
有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研
Linux中引号有两个作用:
1、控制字符替换;
2、执行将单词包含在一起的功能。
我们已经使用过引号。在我们的脚本里面,将文本信息赋值给常量的赋值操作就使用了引号:
- TITLE="System Information for $HOSTNAME"
- RIGHT_NOW=$(date +"%x %r %Z")
- TIME_STAMP="Updated on $RIGHT_NOW by $USER"
在上面这个例子中,文本信息是被双引号包括住的。我们使用双引号的原因是—我们要把所有单词包括住,当作一个整体来对待。如果我们没有使用引号,那么bash解释器,就会将所有位于第一个单词后面的单词,解释为其他的命令(第一个单词被解释为命令)。
尝试一下运行下面的命令,看看有什么效果出来:
单引号和双引号
shell解释器可以识别双引号和单引号。 下面的复制表达式效果是等价的:
- var="this is some text"
- var='this is some text'
然而,在双引号和单引号之间存在一个重要的差别。 单引号,在字符替换方面有限制。 正如我们在上一节所看到的内容一样,你可以将一个变量放在双引号里面,而shell解释器依然会对变量执行字符替换的操作。
我们可以通过使用echo命令来查看这种效果:
如果我们将上述的双引号改为单引号,那么,行为将会改变:
双引号并没有限制—以”$”开头的变量的字符替换,不过,它的确对通配符的扩展效果进行了限制。比如,下面这个例子:
引用单个字符
还有另外一种引用字符你会碰到的。 它就是反斜杠。The backslash tells 反斜杠告诉shell解释器忽略反斜杠符后面的第一个字符。比如:
通过使用反斜杠符,shell解释器忽略了对”$”符号进行解释。既然shell已经忽略了”$”,那么,shell解释器也就不会对$HOSTNAME执行字符替换了。 下面,给出一个更有用例子:
正如你所看到的,通过使用反斜杠符号,我们可以将双引号包含在文本里面。
反斜杠的其他使用技巧
如果,你阅读过任何软件的使用手册,并且这手册是由GNU项目完成的,那么,你会发现,在软件的命令选项中,除了以一个下划线_加一个字母的形式出现之外,还有,以两个下划线加一个完整的单词的形式出现。例如,下面两个语句是等价的:
为什么在软件中,这两种形式都是支持的呢?短的那种形式,是专门为那些懒的输入员而设定的,而长的那种形式,是专门为写脚本而存在的。我有时候,是混合着使用上面的两种形式,然后,我发现采用长的命令选项有用,如果,我写了一个脚本,并且,我将在几个月后去阅读它。看到长的命令选项,有助于我理解这个命令选项是什么意思,从而省却我去查man手册的功夫。现在多敲几下键盘,会以后节省很多功夫。 这样,懒惰的原则就保持住了。
你有可能会疑虑,使用长的命令形式,会导致一个单独的命令变得很长。 为了与这个问题斗争,你可以使用反斜杠来让shell解释器忽略换行符号,正如下面的操作:
这样使用反斜杠,可以让我们将每行的内容包含在一个单独的命令中。让这个技巧可以应用,要注意的地方:换行,必须在反斜杠后面马上出现(也就是,在输入了反斜杠之后,就必须换行了)。 如果,你将一个空格符放置在反斜杠后面,那么,空格符号会被忽略,而不是换行符被忽略。反斜杠符,也可以被用于,将特殊的符号插入到文本。special characters into our text. 这些符号,被叫做—转移字符,下面就有一些转移字符:
转义字符 ………………….. | 名字 | 可能的用途 |
n | 换行符 | 添加空白行在文本中 |
t | 制表符 | 将水平制表符添加到文本中 |
a | 提醒 | 让你的终端发出嘟嘟声。 |
\ | 反斜杠 | 插入一个反斜杠符 |
f | formfeed | Sending this to your printer ejects thepage |
转移字符的应用很常见。非常常见转移字符,这个想法,首先出现在C语言里面。今天 shell解释程序、C++、perl、python、awk、tcl 和其他程序语言都使用了转移字符这个概念。通过使用 echo 命令的 -e 选项,我们将展示上述转移字符的应用:
【编辑推荐】
点赞 0
- 大家都在看
- 猜你喜欢
编辑推荐
- 24H热文
- 一周话题
- 本月最赞
- 几款开源的ETL工具及ELT初探如何像Linux专家那样使用WSLLinux操作系统下/etc/hosts文件配置方法Windows 10 Lean版系统首曝光:精简2GB大小、无预装如何在Windows 10中关闭通知从0到1,滴滴DB自动化运维架构实践你应该知道的八款国产操作系统解决IT运维人员之痛:京东云自动化运维体系构建实践
- 几款开源的ETL工具及ELT初探解决IT运维人员之痛:京东云自动化运维体系构建实践29条运维工程师必会实用Linux命令Linux操作系统下/etc/hosts文件配置方法Linux下RPM软件包的安装及卸载如何在Linux中查看所有正在运行的进程你应该知道的八款国产操作系统df、du、fdisk:Linux磁盘管理三板斧的使用心得
- 几款开源的ETL工具及ELT初探Linux下RPM软件包的安装及卸载Linux操作系统下/etc/hosts文件配置方法面向开发运维的10款开源工具如何在Linux中查看所有正在运行的进程CentOS下安装JDK的三种方法df、du、fdisk:Linux磁盘管理三板斧的使用心得Linux服务器上监控网络带宽的18个常用命令
视频课程+更多
-
Swift全面深入详解视频课程
讲师:张荣超157553人学习过
-
2018年软考-信息系统项目管理师-基础知识(上)
讲师:小任老师297250人学习过
-
跟上Java8 Lambda表达式实战视频教程
讲师:刘宗泽43219人学习过
最新专题+更多
- 精选博文
- 论坛热帖
- 下载排行
读 书 +更多
Linux服务器安全策略详解
Linux主要用于架设网络服务器。如今关于服务器和网站被黑客攻击的报告几乎每天都可以见到,而且随着网络应用的丰富多样,攻击的形式和方法...
-
订阅51CTO邮刊
点击这里查看样刊