就是说在 /home/kevin/test 下查找名为cc.txt的文件 ,然后对查找到的文件执行rm -f 命令,强制删除。
成都创新互联公司专业为企业提供裕安网站建设、裕安做网站、裕安网站设计、裕安网站制作等企业网站建设、网页设计与制作、裕安企业网站模板建站服务,10多年裕安做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
{} \;是 固定格式
花括号扩展可以让我们按照花括号里的模式创建一连串字符串。
例如:
可以看到打印了:
由于默认模式下,不能忽略空格,这里使用 _ 代替空格。
这里的开头部分 Love_ 被称为 前导字符(preamble ),结尾部分 _Forever 被称为 附言(postscript) 。
我们还可以按顺序输出设定范围内的字母或者数字,例如:
终端里将打印出:
打印字母的时候有点 特殊问题 ,我们先来看下面按序输出大写的A到Z的字母:
再来看全是小写字母a到z:
目前为止都很正常,但是我们输入:
这时候打印出的是:
可以看到先输出全部大写字母,然后出现一堆符号,然后再全部小写字母。很奇怪对吧,等会再解释为什么这样,我们再来看输入:
这时候返回的是:
更加奇怪了是不是,这是为什么呢?
我们来看一个东西,ASCII码表:
这时候我们看65号的A到122号的z之间,除了大小写字母之外,是不是出现了那堆奇怪的符号。这是因为花括号扩展的顺序是按照ASCII码表的顺序输出的。
这时候我们也就可以理解 echo {a..Z} 为什么会返回那段字符串了,因为在ASCII码表中其实是倒序的。
不过经过测试可以发现,由于其他符号有已经被赋予特殊含义,就只有大小写字母之间会出现这个问题。需要在使用中注意哦!
花括号扩展支持嵌套,例如:
花括号扩展普遍应用于创建一系列文件或者目录,这时候就可能需要按照时间来命名,手动输入一个个输入太麻烦了,这时候也可以使用花括号扩展,如下:
可以看到 01 自动变成 1 ,这样不能让月份都为两位,不好看。可以这样:
有些小伙伴经常在SHELL脚本中看到某些特殊的取值或者赋值方式,比如${}连起来用的含义
那么我们直接上答案: 替换/截取
假设我们定义一个变量:
我们获取fileName的值使用 :
替换其中的tempDir1为tempDir3,我们可以使用命令:
结果
替换全部的Dir为Path
结果
#, ##, %,%%的作用
#符号A,##符号A,%符号A,%%符号A
为什么#是取左边的,%是取右边的呢?
看我们键盘的布局:
数字键 3 4 5 分别对应 # $ % ,
#和% 正好位于取值符号$的左右两边,你知道了么。。。。。。
常见用法:
加入我们调用一个脚本,入参有多个,
touch {1..100} 中, touch 是更新文件时间戳命令,无文件则创建。
(假如你的shell环境为bash)
{1..100}是bash的花括号展开表达式
1 表示起始的数字
.. 表示连续的意思
100表示终止数字的意思,也包括这个数字
步进为1, 左右闭合
命令执行时,bash会自动展开touch {1..100} 就变成了 touch 1 2 3 4 5 6 7 此处省略 100
截图是bash的源码中处理花括号(curly braces)的扫描代码。文件为: braces.c
并且这个花括号表达式是在3.0以上bash中使用。
baozi是当前登录用户名,localhost是主机名。
中括号中的内容表示是可选参数,可选一个或多个或不选,大括号中的内容表示只可选其中一个参数。
标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0、1和2。这里2的意思就是将标准错误也输出到标准输出当中。