每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")
引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”)。
单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要用于信息的原样输出,防止任何变量的扩展,双引号(软转义)允许变量扩展、转义符和命令替换。单引号保护双引号,双引号保护单引号。
1. 反斜杠
反斜杠通过解析器将1个字符转化为引用符号或转义。
1)在单引号内使用反斜杠,反斜杠不会被解析,保持原样输出。
2)在双引号内使用反斜杠,主要用于美元符号($),反单引号(``),双引号(""),单引号('')的输出,以及转义符的解析,其中单引号的输出中,反斜杠和双引号不能同时使用。
3)不使用单引号和双引号(如:echo \,输出为空),则反斜杠可以被看做自动忽略。
2. 单引号
1)单引号内不允许任何变量、元字符、通配符、转义符的解析,均被原样输出。
2)使用双引号或反斜杠转义可显示输出单引号,但是双引号和反斜杠不能被同时使用。
如命令:echo “\'”,输出结果会为(\'),而不是(')
3)可解析正则表达式,与sed和grep命令配合使用
3. 双引号
保护特殊元字符和通配符不被shell解析,但是允许变量和命令替换,以及转义符的解析。
4. 附录
在此顺便学习一下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或\T | 24小时或12小时制时间 |
| \n | 输出换行 |
| \r | 光标移至行首,并且不换行 |
| \s | 当前shell的名称,如bash |
| \t | 插入Tab键 |
| \u | 当前登录shell的用户名 |
| \v | Bash版本 |
| \w | 当前工作目录 |
| \W | 当前工作目录的基名 |
| \\ | 反斜杠\\,有无双引号,结果相同 |
| \$ | 美元符号$,有无双引号,结果相同 |
| \" | 双引号“,有无双引号,结果相同 |
| \' | 单引号’,不能与双引号同时使用 |
| \` | 反单引号`,有无双引号,结果相同 |
| \nnn | 插入八进制所代表的ASCII字符 |
每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")的更多相关文章
- linux命令行下使用反斜杠“\”调用别名的原命令
经常看到linux软件的作者在介绍安装软件时,在命令前面加一个反斜杠,不解其意,后来查阅资料才知道,这是为了取消别名的调用,使用原命令. alias是shell的内置命令,可以用来设置命令的别名,如使 ...
- 每日linux命令学习-read命令
read命令 作用 从标准输入中读取一行. 语法 read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p pro ...
- 每日linux命令学习-sed
Linux的文本处理实用工具主要由sed和awk命令,二者虽然略有差异,但都使用正则表达式,默认使用标准I/O,并且使用管道命令可以将前一个命令的输出作为下一个命令的输入.笔者将在本节学习sed命令. ...
- 每日linux命令学习-历史指令查询(history、fc、alias)
linux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史.登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件. 1. 箭头符号方向键 使用键盘上的箭头方向键可以从 ...
- 每日linux命令学习-grep模式检索
grep模式检索指令包括grep,egrep,和fgrep,.Linux系统使用正则表达式优化文本检索,所以在此,笔者首先学习了一下正则表达式. 1. 正则表达式 正则表达式使用被称为元字符(Meta ...
- 每日linux命令学习-head命令和tail命令
本节主要学习了linux文件浏览的相关命令,包括cat.less.more.read.tail等,由于本人经常使用cat.less.more命令,已经较为熟悉,所以本节重点学习head命令和tail命 ...
- 每日linux命令学习-xargs命令
xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据 ...
- 每日linux命令学习-rpm命令
rpm命令 rpm是一款强大的Redhat软件包管理工具,可创建.安装.查询.验证.升级和卸载每个软件包,软件包是存储文件,包括需要安装的文件和名称.版本.说明等报信息. rpm默认支持7种操作模式, ...
- 每日linux命令学习-lsattr和chattr
lsattr和chattr命令 1. lsattr命令 作用: 显示文件属性 语法: lsattr [-adlRvV][files...] 参数: -a 显示所有文件和目录(包括隐藏文件)的属性. - ...
随机推荐
- vue在页面嵌入别的页面或者是视频2
vue在页面嵌入别的页面或者是视频 以下是嵌入页面 <iframe name="myiframe" id="myrame" src="http: ...
- 万恶之源 - Python装饰器及内置函数
装饰器 听名字应该知道这是一个装饰的东西,我们今天就来讲解一下装饰器,有的铁子们应该听说,有的没有听说过.没有关系我告诉你们这是一个很神奇的东西 这个有多神奇呢? 我们先来复习一下闭包 def fun ...
- (转)Mysql LIMIT如何正确对其进行优化
以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数.LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返回的第 ...
- eclipse中安装maven,配置本地仓库和镜像
1.安装maven,配置MAVEN_HOME 首先:下载免安装版解压配置MAVEN_HOME(和配置JAVA_HOME一样) 然后按照下面的配置,主要第3步,指定settings.xml文件的位置(在 ...
- python 根据字符串动态的生成变量名并且赋值
Python 动态的创建变量 一.子符串的形式 这是在今天的一个项目中,发现需要动态的创建很多变量.每个变量对应的值的来源都相同.在网上看了些资料,研究出了这个动态创建变量的牛逼方法. 所用的方法就是 ...
- Ajax 传包含集合的JSON
通过ajax给后台传json对象,当json中含对象集合时,如 $.ajax({ url : , type : "POST", dataType : "json" ...
- MySQL 的三个浮点类型
MySQL 支持的三个浮点类型是 FLOAT.DOUBLE 和 DECIMAL 类型. FLOAT 数值类型用于表示单精度浮点数值, DOUBLE 数值类型用于表示双精度浮点数值. 与整数一样,这些类 ...
- PHP的数组合并
1. array_merge 字符索引:后面的覆盖前面的. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值. 混合索引:如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到 ...
- 安装python sklearn经验总结
1. 需要安装 numpy, scipy, 和sklearn和ipython,Cython sklearn,ipython, Cython都可以通过pip来安装.但scipy,可能还有numpy必须通 ...
- RSA加解密 公钥加密私钥解密 公加私解 && C++ 调用openssl库 的代码实例
前提:秘钥长度=1024 ============================================== 对一片(117字节)明文加密 ========================= ...