字符 展开 

这个 “*” 字符意味着匹配文件名中的任意字符 
shell 把 “*” 展开成了另外的东西 ,在 echo 命令被执行前。

~家目录 
算术表达式展开 
算术表达式展开使用这种格式: 
$((expression)) 
echo $((2+2)) 
算术表达式只支持整数(全部是数字,不带小数点) ,但是能执行很多不同的操作。这里是 
一些它支持的操作符: 
操作符 说明 
+ 加 
- 减 
* 乘 
/ 除(但是记住,因为展开只是支持整数除法,所以结果是整 
数。 ) 
% 取余,只是简单的意味着, “余数” 
** 取幂 
在算术表达式中空格并不重要,并且表达式可以嵌套。例如,5 的平方乘以 3: 
[me@linuxbox ~]$ echo $(($((5**2)) * 3)) 
75 
一对括号可以用来把多个子表达式括起来。通过这个技术,我们可以重写上面的例子,同 
时用一个展开代替两个,来得到一样的结果: 
[me@linuxbox ~]$ echo $(((5**2) * 3))

花括号展开 
与数学(a+b)(c+d)一样 = ac+ad+bc+bd

通过它,你可以从一个包含花括号的模式中创建多个文本字符串。这是一个例子:

[root@yuan]# echo abc-{A,B,C}-CBA
abc-A-CBA abc-B-CBA abc-C-CBA

花括号展开模式可能包含一个开头部分叫做报头,一个结尾部分叫做附言。花括号表达式 
本身可能包含一个由逗号分开的字符串列表,或者一系列整数,或者单个的字符串。 
这个例题使用了一系列整数: 
[me@linuxbox ~]$ echo Number_{1..5} 
Number_1 Number_2 Number_3 Number_4 Number_5

一系列以倒序排列的字母: 
[me@linuxbox ~]$ echo {Z..A} 
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

花括号展开可以嵌套:

[root@yuan]# echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b

最普遍的应用是,创建一系列的文件或目录列表。 
例如,如果我们是摄影师,有大量的相片。我们想把这些相片按年月先后组织起来。首先,我们要创建一 
系列以数值 “年-月” 形式命名的目录。通过这种方式,目录名按照年代顺序排列。我们可以键 
入整个目录列表,但是工作量太大了,并且易于出错。反而,我们可以这样做: 
[me@linuxbox ~]$ mkdir Pics 
[me@linuxbox ~]$ cd Pics 
[me@linuxbox Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12} 
[me@linuxbox Pics]$ ls 
2007-01 2007-07 2008-01 2008-07 2009-01 2009-07 
2007-02 2007-08 2008-02 2008-08 2009-02 2009-08 
2007-03 2007-09 2008-03 2008-09 2009-03 2009-09 
2007-04 2007-10 2008-04 2008-10 2009-04 2009-10 
2007-05 2007-11 2008-05 2008-11 2009-05 2009-11 
2007-06 2007-12 2008-06 2008-12 2009-06 2009-12

命令替换
命令替换允许我们把一个命令的输出作为一个展开模式来使用:
echo $(ls)
 
双引号
引用的第一种类型,双引号。如果你把文本放在双引号中,shell 使用的特
殊字符,除了 $,\ (反斜杠) ,和 ‘(倒引号)之外,则失去它们的特殊含义,被当作普通字符
来看待。这意味着单词分割,路径名展开,波浪线展开,和花括号展开都被禁止,然而参数展
开,算术展开,和命令替换仍然执行。使用双引号,我们可以处理包含空格的文件名。
 
单引号
如果需要禁止所有的展开,我们使用单引号。
输出比较结果
[me@linuxbox ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER 
text /home/me/ls-output.txt a b foo 4 me 
89 
[me@linuxbox ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER" 
text ~/*.txt {a,b} foo 4 me 
[me@linuxbox ~]$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER' 
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
 
反引号
 `ls`
 
转义字符
有时候我们只想引用单个字符。我们可以在字符之前加上一个反斜杠,在这个上下文中叫
做转义字符。经常在双引号中使用转义字符,来有选择地阻止展开。
注意在单引号中,反斜杠失去它的特殊含义, 它被看作普通字符。

Shell符号展开的更多相关文章

  1. Shell的展开

    Shell的展开 2018-5-30   Writen By Stephen.Yu  一.路径名展开 shell执行echo命令前,在命令行上自动展开任何符合条件的字符,例如这里,* 被展开成当前的路 ...

  2. linux shell `符号详解

    linux shell `符号详解 <pre>[root@iZ23uewresmZ arjianghu]# echo `ls`asss.html common guaji.php imag ...

  3. shell符号解释

    #符号详解 () 在子shell中运行 (a=1);echo $a,结果是空,因为a=1不是在当前shell中运行的(a=1);(echo $a)也是空的 小技巧:(cd $path, do some ...

  4. shell 符号的定义(一)

    在shell中,在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”.但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小 ...

  5. shell !符号

    执行某历史命令 history找出历史命令id号 ! id

  6. shell符号

    *:  通配符 *.c : c结尾的文件 *v : v结尾的文件 v* : v开头的文件

  7. shell中的特殊符号

    Shell符号及各种解释对照表: Shell符号 使用方法及说明 # 注释符号(Hashmark[Comments]) 1.在shell文件的行首,作为shebang标记,#!/bin/bash; 2 ...

  8. shell基础之符号与语法

            shell脚本如今已经成为了一种非常普遍的脚本语言,之所以如此广泛的被应用,毋庸置疑它是有它的独到之处的.shell脚本语言和其它的语言比方说c/c++有何不同呢?c/c++等语言属于 ...

  9. Linux下高效编写Shell——shell特殊字符汇总

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...

随机推荐

  1. thinkphp3.2.3 版本使用redis缓存的时候无法使用认证

    我在使用thinkphp3.2.3的时候 发现如果是使用redis缓存 设置了认证的redis能连接成功 却无法 set 操作 ,检查发现是没有认证导致的  $redis->auth这一步没有, ...

  2. jqgrid使用简单记录

    我要为id为jqGrid的table使用jqgrid插件. $("#jqGrid").jqGrid({ url: 'data/test.json', mtype: "GE ...

  3. validatebox实现多重规则验证

    作为Easyui的校验插件没有实现多重校验能力是一种缺憾.比如说,既要限制格式为email,同时要求最长长度为20,我们就要扩展一种规则,而对长度的要求很容易变化,如果变成要求30,我们又得扩张一种规 ...

  4. thickbox关闭子页后ajax局部刷新父页

    1. 首先注意需要调用thickbox的js <script type="text/javascript" src="<%=path%>/js/jque ...

  5. RHCA学习笔记:RH442-Unit6 磁盘性能调整

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://alansky.blog.51cto.com/634963/654451 UNIT ...

  6. list add元素覆盖之前元素问题思考

    最近码墙时发现了一个很有意思的问题,定义一个引用对象,如果在循环外面定义对象,在循环里list.add(对象),最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前所有的数据覆盖掉,蛮有趣 ...

  7. 使用TabLayout快速实现一个导航栏

    在没有Material Design的年代,要实现一个类似微信主页面的效果,我们有以下几种解决方案: 1.Fragment + ViewPager  +  RadioGroup自定义固定导航条 2.F ...

  8. 破解C#的readonly只读字段

    破解C#的readonly只读字段 目录 请允许我再唠叨几句const和readonly 修改readonly字段: 计策1:反间计 -- 反射修改 计策2:借刀杀人--调节字段偏移位置的结构体来修改 ...

  9. oracle EBS 基于Host并发程序的开发(转)

    参考此编文章 http://www.doc88.com/p-0972680953307.html http://www.cnblogs.com/benio/archive/2011/06/10/207 ...

  10. linux 常用查找命令 小技巧

    wc -l `find . -name "*.css"`|tail -n1 指定目录下 在指定后缀文件 查找关键字 find ./ -name "*" -exe ...