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

常常在別人的博客中看到相似下面的命令,shell

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

{}並無什麼實際的含義,可是能夠做爲Brace expansion(大括號擴展),常常用於產生各類組合。code

花括號模式是以一個可選的前導字符,後面跟着一系列以逗號分隔的字符串或者是以點號分隔的字符串。前導字符被添加到字符串前面,後面的字符串被附加到每一個結果以後,點號用來生成序列字符串

例如在終端輸入以下命令博客

echo {1..10}

則會輸出io

1 2 3 4 5 6 7 8 9 10

或者class

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
相關文章
相關標籤/搜索