bash的brace expansion(大括号扩展)功能

本文介绍了Bash Shell中的花括号扩展(brace expansion)功能,它是bash优先级最高的扩展,用于生成任意字符串。内容包括花括号扩展的定义、两种格式的详解、以及多个实例解析,帮助读者深入理解这一特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚在执行find搜索命令时,报错了。。

$ find ./ -maxdepth 1 -type f -name *.trace
find: paths must precede expression: eEEProIfconfig.trace
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

网上查了下,原来是在使用正则搜索多个文件时,正则PATTERN表达式需要加上引号(单引号和双引号都可以)。

$ find ./ -maxdepth 1 -type f -name "*.trace"
./1.trace
./2.trace
./3.trace

其间网上看到这么两条指令:

$find /data/ -type f -name"*.txt" -exec cp {} /tmp \;
$find /var/www/ -name file -exec cp {}{,.bak} \; 递归备份文件

对其中cp指令后面的空白大括号比较疑惑。带着疑问网上搜索了下,得知{}大括号里的内容为find命令找到的结果

@astrotycoon 的《bash之花括号展开(brace expansion)》这篇博文详细介绍了bash中花括号(大括号)的扩展。
其中下图非常有意思,展示了bash shell的扩展顺序:
refer to "Learning the bash shell"


回到花括号扩展的问题上来,

花括号展开的定义(brace expansion)

花括号扩展有时在别的书籍中也被称为大括号扩展,是可以让bash生成任意字符串的一种扩展功能。它与后面会提到的“路径扩展”非常相似,唯一不同的是生成的字符串可以是不存在的路径或者文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值