Catalogue
{}
并没有什么实际的含义,但是可以作为 Brace expansion(大括号扩展),经常用于产生各种组合。
{..} - 序列拓展
用于生成数字和字母序列,输出序列打印在同一行中,它们之间有空格。大括号中的点之间不能有空格。否则,扩展将无法工作。
数字序列拓展
基本数字序列。可以是正序或逆序:
1 | # 数字 |
添加前导零:
1 | # 添加前导零 |
字母序列拓展
1 | # 字母 |
渐进(递增/递减)序列拓展
渐进序列,用 {x..y..z}
生成从 x 到 y 的值,同时增加 z。
1 | # 偶数数列 |
{,} - 列表拓展
对大括号中的以逗号分割的字段列表进行拓展。
1 | $ echo {foo,bar} |
实际运用
创建具有相似名称的多个文件
创建具有特定名称模式的文件:
1 | $ touch bar-{1..10}.txt |
可以使用多个花括号来创建具有相似名称和不同扩展名的文件:
1 | $ touch {a,b,c}.{hpp,cpp} |
拓展的嵌套使用:
1 | $ touch {ex{1..3},ex4}.sh |
创建备份文件
在编辑配置文件时,通常需要进行备份。一般惯例是在原始文件名中添加 .bak
扩展名,这表示它是给定文件名的备份。
1 | # 将httpd.conf备份为httpd.conf.bak |
在路径中使用花括号扩展
假设您有一个类似的目录结构,只需稍作更改。花括号扩展在这里很有用。
1 | mv project/{new,old}/dir/file |
异常情况
不是所有的东西都可以使用扩展。你想要创造序列,所以它应该是可以被创造成序列的东西。如果你使用一个奇怪的组合,它就不可以使用扩展。
1 | # 几乎没有意义的序列 |