说明:{,}在cp或mv Bash Shell命令中

时间:2020-01-09 14:16:22  来源:igfitidea点击:

在Linux和Unix shell中命令cp /etc/httpd/httpd.{,.bakup}OR mv resume{z,}.doc中,
{,}的作用是什么命令?

{}是括号扩展,通常用于生成组合。

括号扩展是一种可以生成任意字符串的机制。
此机制类似于文件名扩展,但是生成的文件名不必存在。
花括号扩展的模式采用可选的前导形式,其后是一系列用逗号分隔的字符串或一对花括号之间的顺序表达式,然后是可选的后记。
前缀在花括号中包含的每个字符串之前加上前缀,然后将后记追加到每个结果字符串之后,从左向右扩展。

cp或mv Bash Shell命令中的{,}

打开终端并输入以下命令:

echo foo{1,2,3}.txt

输出示例:

foo1.txt foo2.txt foo3.txt

尝试使用以下追加示例为命令创建参数并节省执行时间:

echo file.txt{,.bak}
echo file-{a..d}.txt
echo mkdir -p /apache-jail/{usr,bin,lib64,dev}
echo cp httpd.conf{,.backup}
echo mv delta.{txt,doc}

例子

您可以使用花括号扩展来复制文件,重命名/备份文件或创建目录。
在这个传统示例中,将名为file1.txt的文件备份到file1.txt.bak,执行:

cp -v file1.txt file1.txt.bak

使用cp命令时,可以通过大括号扩展来节省时间,如下所示:

cp -v file1.txt{,.bak}

输出示例:

file1.txt -> file1.txt.bak

更多括号扩展示例

要列出Linux上"下载"和"图片"文件夹中的所有pdf和png文件?
可以执行:

ls -l ~/{Downloads,Pictures}/*.{pdf,png}

Brace扩展可能嵌套在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}}

整合在一起

让我们使用bash for loop通过apt命令或yum命令更新系统:

## update all CentOS/ RHEL 7.x boxes named ##
for server in aws-{prod,backup-prod}-{db,www}-0{1..4}
do
   ssh -t Hyman@${server} sudo -- sh -c 'yum update'
done