shell通配符特殊符号与转义符
Posted Dayo Yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell通配符特殊符号与转义符相关的知识,希望对你有一定的参考价值。
通配符(wildcard)是由shell处理的(不是由所涉及到命令语句处理的),它只会出现在命令的"参数"里(它不用在命令名称,也不用在操作符上)
通配符 |
含义 |
* |
匹配零个或多个字符 |
? |
匹配任意单个字符 |
[c1-c2] |
匹配c1到c2(如[0-9],[a-z])中的任意单一字符 |
[list] |
匹配list中的任意单一字符 |
[^list] |
匹配非list中的任意单一字符 |
{string1,string2,…} |
匹配string1或string2…其中一个字符串(注意是花括号) |
查看硬盘文件的相关权限属性
找出/etc/目录下以cron为开头的文件名
找出/etc/目录下文件名刚好是五个字符的文件名
找出/etc/目录下文件名开头非a到x字母的文件名
其他特殊符号Meta(shell元字符)
字符 |
说明 |
IFS |
(内部域分割符)由 <space> 或 <tab> 或 <enter> 三者之一组成(我们常用 space )。 |
CR |
由 <enter> 产生。 |
# |
批注符号,这个最长被使用在script脚本当中,视为说明,其后的数据均不执行。 |
~ |
用户的主文件夹 |
= |
设定变量。 |
$ |
作变量(变量前导符,即变量之前需要加的变量替代值)或运算替换 |
>,>> |
重定向 stdout,分别是"替换"与"追加"。 * |
<,<< |
重定向 stdin,分别是"替换"与"追加"。 * |
| |
管道(pipe),分隔两个管道命令的界定。 * |
& |
重导向 file descriptor ,或将命令置于背景下执行(作业控制 job control)。 * |
( ) |
在中间为子shell的执行与结束(将其内的命令置于nested subshell执行),或用于运算或命令替换。 * |
{ } |
在中间为命令块的组合(将其内的命令置于 non-named function 中执行),或用在变量替换的界定范围。 |
; |
在前一个命令结束时,而忽略其返回值,继续执行下一个命令(组合连续执行,命令之间无任何逻辑上的关系,区分于管道命令)。 * |
&& |
在前一个命令结束时,若返回值为 true,继续执行下一个命令。 * |
|| |
在前一个命令结束时,若返回值为 false,继续执行下一个命令。 * |
! |
执行 history 列表中的命令。* |
加入"*" 的字符是作用在命令名之间的。
可以发现shell 元字符,基本是作用在命令上,用作多命令分割(或者参数分割)。
因此看到与通配符有相同的字符(如!),但是实际上作用范围不同。所以不会出现混淆。
=:设定变量,$:变量前导符
&:将命令变成背景下工作(后台执行,退出shell后进程会停止)
<http://www.cnblogs.com/TianFang/archive/2013/01/23/2872645.html>
使用jobs命令查看当前后台命令(状态:running运行、stopped暂停、terminated终止),当前打包压缩的job号为1
fg 1:调至前台继续运行(ctrl+z可使前台进程挂起放置背景(stopped状态))
bg 1:将一个后台暂停(stopped)的进程,变成后台执行(running)
kill %1:终止(terminated)后台进程
使用ps命令查看进程状态,当前打包压缩的进程号PID为4463、4467
kill 4464;kill 4467:终止tar、gzip后台进程
参考资料: <https://zhidao.baidu.com/question/1819125360697847748.html>
;(分号):组合连续执行命令,命令间无任何逻辑上的关系,仅按循序执行
command1 && command2:仅当command1命令执行成功后才会执行&&控制符后面的command2命令
command1 || command2:仅command1命令执行失败后才执行||控制符后面的 command2命令(若前一个命令command1执行成功,则command2不执行,也就是command1和command2总仅有一条命令执行)
特殊字符用法: <https://www.cnblogs.com/lidabo/p/4323979.html>
转义字符
字符 |
说明 |
\'\'(单引号) |
又叫硬转义,其内部所有的shell 元字符、通配符的特殊意义都会被屏蔽。注意:不可以在两个单引号(硬转义)中间单独插入一个单引号,单引号必须成对出现。 |
""(双引号) |
又叫软转义,类似于单引号(硬转义),但其内部不会屏蔽`(单引号)、\\(反斜杠)、$(变量前导符)这三个字符的特殊意义。 |
\\(反斜杠) |
又叫转义,去除其后紧跟的元字符或通配符的特殊意义。 |
``(反引号) |
用于命令代替,把其中的命令执行后返回一个结果(就是先执行的命令,然后其执行结果将作为外部命令的输入信息。也可使用$()替代) |
\'\'单引号(硬转义)
""双引号(软转义)
\\反斜杠(转义)
使用硬转义(一对\'\'单引号)输出\'单引号:$\'\\\'\'("$"+"单引号\'"+"\\"+"单引号\'"+"单引号\'")
``反引号(最好使用$()代替)(``命令替换操作会创建一个子shell来运行对应的命令)
花括号{}的使用技巧:通过花括号扩展可以生成命令行或脚本所需要的字符串
-
括号中可以包含连续的序列或使用逗号分隔的多个项目;
-
连续的序列包括一个起点与一个终点,并使用".."(两个点)分隔。
理论上,文件名尽量不要使用到本笔记所提到的上述字符
参考资料: <http://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html>
以上是关于shell通配符特殊符号与转义符的主要内容,如果未能解决你的问题,请参考以下文章