2015-03-05

Ubunut Linux 利用 cp 指令和 {} 符號複製檔案

如果要把某個資料夾下的三個不同檔案名稱的檔案從現有資料夾複製到另一個資料夾的話,你會怎麼做呢 ? ... 這個嘛 ... 阿舍通常為了少打一長串的資料夾路徑名稱,所以,都是先切到那個資料夾後,再來用 cp 複製檔案,不過,老實說,這種方法有點拙哩 ! 其實,只要用 cp 指令加上 {} 符號就可以用一行指令來搞了 ...



阿舍是最近才知道這個 {} 符號在 Shell 裡的用途哩 ! 原來,Shell 程式會自動把 {} 符號外的字串和 {} 符號會併後產生成多個字串,舉例來說,下面這行指令就可以自動產生二個字串,但是,只要在 {} 符號內輸入有變化的部份就可以了。

$ echo /var/www/arthurtoday.com/index.{html,html.BAK}
/var/www/arthurtoday.com/index.html /var/www/arthurtoday.com/index.html.BAK

有注意到嗎 ? 產生出來的字串,剛好可以直接拿來給 cp 或 mv 這種需要輸入來源和目的檔的指令用,所以,如果阿舍把上面這一行指令的 echo 指令拿掉來換成 cp 指令的話,那就可以馬上在原來的資料夾建立該檔案的備份檔案哩 !

$ cp /var/www/arthurtoday.com/index.{html,html.BAK}

但是,這種在原地建立備份的用途對阿舍來說,實用性不大,因為,阿舍大都會把檔案備份到其它資料夾,所以,沒有辦法指定備份資料夾就不太有用哩 ! 不過,阿舍發現在備份同一個資料夾下的多㑼不同檔案名稱時,會滿用的哩 !

幾種 {} 符號的應用範例
舉例來說,阿舍想要備份 /etc/nginx/sites-available 資料夾下的 default、arthurtoday.com 和 mdoc.cc 三個設定檔到 ~/bak 資料夾時,利用 cp 指令搭配 {} 符號就可以省打不少字哩 !

$ cp /etc/nginx/sites-available/{default,arthurtoday.com,mdoc.cc} ~/bak

這個 {} 符號不只可以用在 cp 指令或 mv 指令而己,還可以搭配很多指令來用,都可以用來減少打字的時間,有空可以試試、玩玩囉 ! ...

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

2 則留言 :

匿名 提到...

$ echo /var/www/arthurtoday.com/index.{html,html.BAK}
/var/www/arthurtoday.com/indexhtml /var/www/arthurtoday.com/index.html.BAK
應該是
$ echo /var/www/arthurtoday.com/index.{html,html.BAK}
/var/www/arthurtoday.com/index.html /var/www/arthurtoday.com/index.html.BAK
吧?

Arthur 提到...

Hello,

是的,已更新 ...

謝謝囉 ! ... ^^=

張貼留言

歡迎留言提問和討論 .... 😁