在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}}