就是說在 /home/kevin/test 下查找名為cc.txt的文件 ,然后對查找到的文件執(zhí)行rm -f 命令,強制刪除。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供裕安網(wǎng)站建設、裕安做網(wǎng)站、裕安網(wǎng)站設計、裕安網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、裕安企業(yè)網(wǎng)站模板建站服務,10多年裕安做網(wǎng)站經驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
{} \;是 固定格式
花括號擴展可以讓我們按照花括號里的模式創(chuàng)建一連串字符串。
例如:
可以看到打印了:
由于默認模式下,不能忽略空格,這里使用 _ 代替空格。
這里的開頭部分 Love_ 被稱為 前導字符(preamble ),結尾部分 _Forever 被稱為 附言(postscript) 。
我們還可以按順序輸出設定范圍內的字母或者數(shù)字,例如:
終端里將打印出:
打印字母的時候有點 特殊問題 ,我們先來看下面按序輸出大寫的A到Z的字母:
再來看全是小寫字母a到z:
目前為止都很正常,但是我們輸入:
這時候打印出的是:
可以看到先輸出全部大寫字母,然后出現(xiàn)一堆符號,然后再全部小寫字母。很奇怪對吧,等會再解釋為什么這樣,我們再來看輸入:
這時候返回的是:
更加奇怪了是不是,這是為什么呢?
我們來看一個東西,ASCII碼表:
這時候我們看65號的A到122號的z之間,除了大小寫字母之外,是不是出現(xiàn)了那堆奇怪的符號。這是因為花括號擴展的順序是按照ASCII碼表的順序輸出的。
這時候我們也就可以理解 echo {a..Z} 為什么會返回那段字符串了,因為在ASCII碼表中其實是倒序的。
不過經過測試可以發(fā)現(xiàn),由于其他符號有已經被賦予特殊含義,就只有大小寫字母之間會出現(xiàn)這個問題。需要在使用中注意哦!
花括號擴展支持嵌套,例如:
花括號擴展普遍應用于創(chuàng)建一系列文件或者目錄,這時候就可能需要按照時間來命名,手動輸入一個個輸入太麻煩了,這時候也可以使用花括號擴展,如下:
可以看到 01 自動變成 1 ,這樣不能讓月份都為兩位,不好看??梢赃@樣:
有些小伙伴經常在SHELL腳本中看到某些特殊的取值或者賦值方式,比如${}連起來用的含義
那么我們直接上答案: 替換/截取
假設我們定義一個變量:
我們獲取fileName的值使用 :
替換其中的tempDir1為tempDir3,我們可以使用命令:
結果
替換全部的Dir為Path
結果
#, ##, %,%%的作用
#符號A,##符號A,%符號A,%%符號A
為什么#是取左邊的,%是取右邊的呢?
看我們鍵盤的布局:
數(shù)字鍵 3 4 5 分別對應 # $ % ,
#和% 正好位于取值符號$的左右兩邊,你知道了么。。。。。。
常見用法:
加入我們調用一個腳本,入?yún)⒂卸鄠€,
touch {1..100} 中, touch 是更新文件時間戳命令,無文件則創(chuàng)建。
(假如你的shell環(huán)境為bash)
{1..100}是bash的花括號展開表達式
1 表示起始的數(shù)字
.. 表示連續(xù)的意思
100表示終止數(shù)字的意思,也包括這個數(shù)字
步進為1, 左右閉合
命令執(zhí)行時,bash會自動展開touch {1..100} 就變成了 touch 1 2 3 4 5 6 7 此處省略 100
截圖是bash的源碼中處理花括號(curly braces)的掃描代碼。文件為: braces.c
并且這個花括號表達式是在3.0以上bash中使用。
baozi是當前登錄用戶名,localhost是主機名。
中括號中的內容表示是可選參數(shù),可選一個或多個或不選,大括號中的內容表示只可選其中一個參數(shù)。
標準輸入stdin,標準輸出stdout和標準錯誤stderr,三個系統(tǒng)文件的文件描述符分別為0、1和2。這里2的意思就是將標準錯誤也輸出到標準輸出當中。