在Bash Shell命令中大括号是什么意思?
时间:2019-11-20 08:53:24 来源:igfitidea点击:
在Bash Shell中,mv命令后面大括号(花括号)是什么意思?
比如 mv book{1,2}.html /bak/
cp /etc/httpd/httpd.{,.bakup}
在Bash Shell命令中的大括号
shell中的大括号{}只是括号扩展,通常用于生成组合。
括号扩展是一种可以生成任意字符串的机制。
此机制类似于文件名扩展,但是生成的文件名不必存在。
花括号扩展的模式采用可选的前缀形式,其后是一系列用逗号分隔的字符串,然后是可选的后缀。
例如:
echo foo{1,2,3}.txt
foo是前缀,{1,2,3}是逗号分隔的字符串,.txt是可选的后缀。
输出示例:
foo1.txt foo2.txt foo3.txt
这样的好处是节省输入命令的时间。
命令中大括号扩展示例
示例:将名为file1.txt的文件备份到file1.txt.bak,
常规写法是:
cp -v file1.txt file1.txt.bak
使用大括号扩展,可以像下面这样写:
cp -v file1.txt{,.bak}
示例: 查看Downloads和Uploads两个目录中的png和jpg文件
ls -l ~/{Downloads,Uploads}/*.{jpg,png}
在Linux和Unix系统上的大括号扩展可能还会嵌套。
例如:
echo a{1,2,3}b echo a{1,2}{b,c} echo 'Hi '{Wends,Marlena,Hyman,Raj}$', let\'s be friends!\n' sudo chown www:data /wwwdata/{images/{old,new},lib/{how_to?.?*,old_html}}