linux 下 {}大括號的用法

我們平時使用Linux的時候經常遇到這樣一個問題,舉例有這樣一種情況:執行命令
  $ cp /etc/apt/sources.list /etc/apt/sources.list.bak
  這裏面有個問題,明明 /etc/apt/sources 這幾個字都是一樣的,爲什麼要打兩遍?這樣的還算短了,要是更深層的目錄,那花的力氣可就大了。跟上面例子很相似的情況是:在備份一個文件,重命名一個文 件,或是創建一個鏈接,都要進行類似的操作,重複一個相同的路徑。通常比較明智的做法是先 cd 到那個目錄,然後在那個目錄下進行操作,完後再 cd 回來。不過這樣做還是比較麻煩,有沒有足不出戶的解決方法?答案是肯定的。
  Bash 有個功能叫大括號擴展,大括號包圍的,用逗號隔開的參數會擴展爲獨立的多個參數。這樣講您一定懵了,具體一點,上面那個備份文件的例子可以寫成:
  $ cp /etc/apt/sources.{list,list.bak}
  Shell 在解釋時會自動將後面的參數擴展成兩個,就變成了和上面一樣的完整命令。這樣就實現了足不出戶操作,而前面那一串目錄只要打一次就行,連 cd 也免敲了。
  其實這個命令還可以再簡化,那個 list 也可以並過去的。之前我一直在想,拿什麼來代表空白,其實什麼都不用寫就行了。
  $ cp /etc/apt/sources.list{,.bak}
  這樣逗號前面沒東西,那麼參數就保持原來的不變,逗號後面的照樣擴展


1,花括號
花括號用來匹配一組用逗號分隔的字符串中的任一個。左花括號之前的所有字符稱爲前文(preamble),右花括號之後的所有字符稱爲後文(preamble)。前文和後文都是可選的。花括號中不能包含不加引號的空白符。

2,例子:
(1)$ mkdir /usr/local/src/bash/{old,new,dist,bugs}
    在/usr/local/src/bash目錄下創建4個新目錄,它們分別爲:old,new,dist和bugs
(2)$ echo {mam,pap,ba}a
    mama papa baa
(3)$ echo post{script,office,ure}
    postscript postoffice posture

本文出自 “Mr_Z” 博客,請務必保留此出處http://zhangrong.blog.51cto.com/2196532/885072

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章