Shell符号展开
字符 展开
*
这个 “*” 字符意味着匹配文件名中的任意字符
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
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

Shell符号展开的更多相关文章
- Shell的展开
Shell的展开 2018-5-30 Writen By Stephen.Yu 一.路径名展开 shell执行echo命令前,在命令行上自动展开任何符合条件的字符,例如这里,* 被展开成当前的路 ...
- linux shell `符号详解
linux shell `符号详解 <pre>[root@iZ23uewresmZ arjianghu]# echo `ls`asss.html common guaji.php imag ...
- shell符号解释
#符号详解 () 在子shell中运行 (a=1);echo $a,结果是空,因为a=1不是在当前shell中运行的(a=1);(echo $a)也是空的 小技巧:(cd $path, do some ...
- shell 符号的定义(一)
在shell中,在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”.但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小 ...
- shell !符号
执行某历史命令 history找出历史命令id号 ! id
- shell符号
*: 通配符 *.c : c结尾的文件 *v : v结尾的文件 v* : v开头的文件
- shell中的特殊符号
Shell符号及各种解释对照表: Shell符号 使用方法及说明 # 注释符号(Hashmark[Comments]) 1.在shell文件的行首,作为shebang标记,#!/bin/bash; 2 ...
- shell基础之符号与语法
shell脚本如今已经成为了一种非常普遍的脚本语言,之所以如此广泛的被应用,毋庸置疑它是有它的独到之处的.shell脚本语言和其它的语言比方说c/c++有何不同呢?c/c++等语言属于 ...
- Linux下高效编写Shell——shell特殊字符汇总
Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...
随机推荐
- A Tour of Go Struct Fields
Struct fields are accessed using a dot. package main import "fmt" type Vertex struct { X i ...
- iOS消息推送机制的实现
研究了一下Apple Push Notification Service,实现的很简单,很环保.原理如下 财大气粗的苹果提供了一堆服务器,每个ios设备和这些服务器保持了一个长连接,ios版本更新提示 ...
- GitHub初次使用记录(一)
1.从GitHub上克隆或者复制别人的档案库:
- java使用xheditor Ajax异步上传错误
java使用xheditor Ajax异步上传时候错误如下:the request doesn't contain a multipart/form-data or multipart/mixed s ...
- java中用线程解决进出水问题
//进水 class Inflow implements Runnable{ //水对象 Water wat; public Inflow(Water w){ this.wat = w; } @Ove ...
- 使用ajax代替iframe
相信大多数程序员都跟iframe打过交道,iframe简单,好用.在我用的过程中比较苦逼的是关于iframe高度的设置. 由于子页面内容不确定,页面高度也不确定.于是开始网上的各种搜索,一般有两种:一 ...
- OOP设计模式[JAVA]——02观察者模式
观察者模式 观察者模式的设计原则 为交互对象之间的松耦合设计而努力,使对象之间的相互依赖降到最低. 观察者模式也是对象行为型模式,其意图为:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时 ...
- [Angular 2] Handle Reactive Async opreations in Service
When you use ngrx/store and you want to fire a service request. When it sucessfully return the respo ...
- 进程环境之setjmp和longjmp函数
在C中,goto语句是不能跨越函数的,而执行这样跳转功能的是函数setjmp和longjmp.这两个函数对于处理发生在深层嵌套函数调用中的出错情况是非常有用的. setjmp和longjmp函数也称为 ...
- locale 详解
locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面: 看中文,写中文,与 window中文系统的兼容和通信.从实际经 ...