你可以用它来打印一串数字或字母,用花括号中的两个点分隔两个整数或字母,你会看到神奇的结果。让我们举一个最简单的例子,看看下面的代码:echo上面这行echo代码的输出是什么?如下:12345678910输出结果将打印在同一行,以空格分隔。为了让大家更好的理解它的作用,接下来我们再列举几个其他的例子。一些例子如果我们想得到从7到1的数字序列:$echo7654321可以添加前缀0:$echo01020304050607080910可以使用{x..y..z}生成从x到y的值,按z递增(逐步)。例如,我们要打印15以内的偶数序列,如下:$echo02468101214或者奇数序列:$echo13579111315步长可以指定为任意值:$echo100199298397496595694793892991也可以取负数:$echo3210-1-2-3-4注意:花括号中的点之间不能有空格,否则展开不了工作。使用字母序列我们上面的例子介绍了数字序列的使用。但它也可以用来生成字母序列。看下面的例子:$echoABCDEFGH也可以倒序:$echoHGFEDCBA或者指定步长:$echoHFDB或者使用小写字母:$echoabcdef实际应用上面我们介绍了curly的具体用法braceexpansion,让我们介绍一下它的一些实际应用。创建一系列文件我们可以使用大括号扩展来创建一系列具有相同文件名规则的文件,参见以下示例:$touchfile_{1..10}.txt$lsfile_10.txtfile_2.txtfile_4.txtfile_6.txtfile_8.txtfile_1.txtfile_3.txtfile_5.txtfile_7.txtfile_9.txt创建备份文件我们在编辑配置文件的时候,一般建议先备份。按照大多数人的习惯,就是在原文件名后加上.bak扩展名,表示是原文件的备份。例如:cp-plong_filename.txtlong_filename.txt.bak现在让我们用花括号扩展来完成这个工作,如下代码:cp-plong_filename.txt{,.bak}是的,这里的{,text}不是上面的{X..Y}模式,但你需要知道这样的用法存在。$cp-plong_filename.txt{,.bak}$lslong_filename.txtlong_filename.txt.bak上述cp命令的-p选项表示需要保留原文件的属性,如所有权和时间戳。使用多个大括号多个大括号可用于创建名称相似但扩展名不同的文件,请参见以下示例:$touch{a,b,c}.{hpp,cpp}$lsa.cppa。hppb.cppb.hppc.cppc.hpp用于路径或括号扩展假设有两条路径,它们的目录结构相似,只有少数部分不同(比如中间的一个文件夹名称不同),这一次,花括号扩展会非常有用。看下面的代码:mvproject/{new,old}/dir/file相当于:mvproject/new/dir/fileproject/old/dir/file并不是所有的内容都可以展开这个不言而喻。如果你想创建一个序列,给定的条件应该是可以创建到序列中的东西。如果你使用奇怪的组合,它不会被扩展。例如:$echo{1..Z}另外不能使用小数:$echo{1..5..0.5}一些奇怪的组合也会产生奇怪的结果:$echoa`_^][ZYXWVUTSRQPONMLKJIHGF大括号展开可以刚开始时会很麻烦。但是,手动键入可能更耗时。一旦您习惯了它,您的Linux技能就会更上一层楼。
