shell命令中cp、mv配合花括号的用法

经常在别人的博客中看到类似下面的命令,

cp /etc/http/httpd.conf{,bak}

{}并没有什么实际的含义,但是可以作为Brace expansion(大括号扩展),经常用于产生各种组合。

花括号模式是以一个可选的前导字符,后面跟着一系列以逗号分隔的字符串或者是以点号分隔的字符串。前导字符被添加到字符串前面,后面的字符串被附加到每个结果之后,点号用来生成序列

例如在终端输入如下命令

echo {1..10}

则会输出

1 2 3 4 5 6 7 8 9 10

或者

echo foo{1,2,3}.txt
foo1.txt foo2.txt foo3.txt
echo foo-{a..d}.txt
foo-a.txt foo-b.txt foo-c.txt foo-d.txt

echo cp /etc/http/httpd.conf{,.bak}

cp /etc/http/httpd.conf /etc/http/httpd.conf.bak

因此可以使用这种方法备份、重命名文件,还可以创建目录等

cp /etc/http/httpd.conf{,.bak}
# 将httpd.conf备份为httpd.conf.bak
mv /etc/http/httpd.conf{,.bak}
# 将httpd.conf重命名为httpd.conf.bak
mv /etc/http/httpd{.conf,.bak}
# 将httpd.conf重命名为httpd.bak
原文地址:https://www.cnblogs.com/baitutu/p/7739892.html