花括號(hào)擴(kuò)展可以讓我們按照花括號(hào)里的模式創(chuàng)建一連串字符串瀑踢。
例如:
echo Love_{a,b,c}_Forever
可以看到打印了:
Love_a_Forever Love_b_Forever Love_c_Forever
由于默認(rèn)模式下扳还,不能忽略空格,這里使用_
代替空格橱夭。
這里的開頭部分Love_
被稱為前導(dǎo)字符(preamble)氨距,結(jié)尾部分_Forever
被稱為附言(postscript)。
我們還可以按順序輸出設(shè)定范圍內(nèi)的字母或者數(shù)字棘劣,例如:
echo {1..10}
終端里將打印出:
1 2 3 4 5 6 7 8 9 10
打印字母的時(shí)候有點(diǎn)特殊問(wèn)題俏让,我們先來(lái)看下面按序輸出大寫的A到Z的字母:
echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
再來(lái)看全是小寫字母a到z:
echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
目前為止都很正常,但是我們輸入:
echo {A..z}
這時(shí)候打印出的是:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z
可以看到先輸出全部大寫字母茬暇,然后出現(xiàn)一堆符號(hào)首昔,然后再全部小寫字母。很奇怪對(duì)吧糙俗,等會(huì)再解釋為什么這樣勒奇,我們?cè)賮?lái)看輸入:
echo {a..Z}
這時(shí)候返回的是:
a ` _ ^ ] [ Z
更加奇怪了是不是,這是為什么呢巧骚?
我們來(lái)看一個(gè)東西撬陵,ASCII碼表:
這時(shí)候我們看65號(hào)的A到122號(hào)的z之間,除了大小寫字母之外网缝,是不是出現(xiàn)了那堆奇怪的符號(hào)巨税。這是因?yàn)榛ɡㄌ?hào)擴(kuò)展的順序是按照ASCII碼表的順序輸出的。
這時(shí)候我們也就可以理解echo {a..Z}
為什么會(huì)返回那段字符串了粉臊,因?yàn)樵贏SCII碼表中其實(shí)是倒序的草添。
不過(guò)經(jīng)過(guò)測(cè)試可以發(fā)現(xiàn),由于其他符號(hào)有已經(jīng)被賦予特殊含義扼仲,就只有大小寫字母之間會(huì)出現(xiàn)這個(gè)問(wèn)題远寸。需要在使用中注意哦!
花括號(hào)擴(kuò)展支持嵌套屠凶,例如:
echo c{a{1,4},b{2,3}}d
ca1d ca4d cb2d cb3d
花括號(hào)擴(kuò)展普遍應(yīng)用于創(chuàng)建一系列文件或者目錄驰后,這時(shí)候就可能需要按照時(shí)間來(lái)命名,手動(dòng)輸入一個(gè)個(gè)輸入太麻煩了矗愧,這時(shí)候也可以使用花括號(hào)擴(kuò)展灶芝,如下:
mkdir {2018..2021}-{01..12}
2018-1 2018-2 2018-3 2018-4 2018-5 2018-6 2018-7 2018-8 2018-9 2018-10 2018-11 2018-12 2019-1 2019-2 2019-3 2019-4 2019-5 2019-6 2019-7 2019-8 2019-9 2019-10 2019-11 2019-12 2020-1 2020-2 2020-3 2020-4 2020-5 2020-6 2020-7 2020-8 2020-9 2020-10 2020-11 2020-12 2021-1 2021-2 2021-3 2021-4 2021-5 2021-6 2021-7 2021-8 2021-9 2021-10 2021-11 2021-12
可以看到01
自動(dòng)變成1
,這樣不能讓月份都為兩位,不好看夜涕》咐纾可以這樣:
mkdir {2018..2021}-0{1..9} {2018..2021}-{10..12}
2018-01 2018-02 2018-03 2018-04 2018-05 2018-06 2018-07 2018-08 2018-09 2018-10 2018-11 2018-12 2019-01 2019-02 2019-03 2019-04 2019-05 2019-06 2019-07 2019-08 2019-09
2019-10 2019-11 2019-12 2020-01 2020-02 2020-03 2020-04 2020-05 2020-06 2020-07 2020-08 2020-09 2020-10 2020-11 2020-12 2021-01 2021-02 2021-03 2021-04 2021-05 2021-06 2021-07 2021-08 2021-09 2021-10 2021-11 2021-12