在Linux Shell的世界里,有一个小巧而强大的语法糖,能让你高效地批量处理命令、快速生成文件名、甚至一键执行多个任务。它就是我们今天要讲的主角——{}
花括号语法。
本文将带你全面掌握Shell中的花括号用法,并结合实例让你轻松玩转批量命令的魔法。
一、什么是花括号语法?
Shell 中的花括号 {}
,又叫 Brace Expansion(花括号扩展),它不是变量,而是一种用于生成多个字符串的机制。
其基本语法是:
echo {起始..结束}
或者:
echo {字符串1,字符串2,字符串3}
二、基本用法详解
1. 数字范围扩展
echo {1..5}
输出:
1 2 3 4 5
可用于批量生成文件名、目录名等。
touch file{1..3}.txt
生成:
file1.txt file2.txt file3.txt
2. 字符范围扩展
echo {a..e}
输出:
a b c d e
mkdir dir_{a..c}
生成:
dir_a dir_b dir_c
3. 带步长的扩展
echo {1..10..2}
输出:
1 3 5 7 9
4. 字符串列表扩展
echo {apple,banana,grape}
输出:
apple banana grape
结合文件操作:
touch {a,b,c}_log.txt
生成:
a_log.txt b_log.txt c_log.txt
三、嵌套扩展(组合使用)
花括号还支持嵌套组合使用,实现更强大的批量生成功能。
echo {A,B}_{1,2}
输出:
A_1 A_2 B_1 B_2
再比如:
mkdir project_{frontend,backend}_{dev,prod}
创建目录结构:
project_frontend_dev/
project_frontend_prod/
project_backend_dev/
project_backend_prod/
四、实际应用场景举例
1. 快速备份多个文件
cp config.{yaml,json,toml} backup/
拷贝多个配置文件到 backup/
目录。
2. 生成批量测试文件
touch test_{01..10}.txt
3. 清理特定文件
rm temp_{a,b,c}.log
五、注意事项
- 花括号扩展是在参数展开前进行的。
- 如果你在脚本中使用,确保你的Shell支持花括号(大多数如
bash
,zsh
都支持)。 - 要使用零填充格式,比如
{01..10}
,注意前导零统一。
六、小练习:试试看!
# 生成 2024 年每月的日志文件名
echo log_{01..12}_2024.txt
# 创建多个实验目录
mkdir exp{A,B,C}_{1..3}
总结
Shell中的花括号扩展,让我们可以用一行命令完成本来要写十几行的工作,极大提高了效率。无论是自动化脚本、批量文件处理,还是日常操作,灵活运用它,能让你在Linux世界如虎添翼。
下一次当你需要写 mkdir dir1 dir2 dir3
的时候,不妨想想 {}
可以帮你少打多少字!
如果你喜欢这篇文章,不妨收藏、点赞,或者分享到你的技术笔记中。让我们一起把命令行变成魔法棒!
声明:本文为原创文章,版权归深谋之道所有,欢迎分享本文,转载请保留出处!