這篇文章將要先容方括號及其在下令行中的不同用法。
望完花括號在下令行中的用法以后,目前咱們持續來望方括號([] )在上下文中是若何施展作用的。
通配
方括號最簡略的用法便是通配。你可能在曉得“Globbing”這個觀點之前就已經經經由過程通配來婚配內容了,列出具備雷同特性的多個文件便是一個很常見的場景,例如列出一切 JPEG 文件:
ls *.jpg
使用通配符wildcard百家樂來失去切合某個模式的一切內容,這個進程就鳴通配。
在下面的例子之中,星號(* )就代表“0 個或者多個字符”。除此之外,還有代表“有且僅有一個字符”的問號(? )。是以
ls d*k*
可以列出 darkly 以及 ducky ,并且 dark 以及 duck 也是可以被列出的,由于 * 可以婚配 0 個字符。而
ls d*k?
則只能列出 ducky ,不會列出 darkly 、dark 以及 duck 。
方括號也能夠用于通配。為了便于演示,可以創立一個用于測試的目次,并在這個目次下創立文件:
touch file0{0..9}{0..9}
(若是你還不清晰下面這個下令的道理,可以望一下另一篇先容花括號的文章)
履行下面這個下令以后,就會創立 file000 、file001 、……、file099 這 100 個文件。
若是要列出這些文件之中第二位數字是 7 或者 8 的文件,可以履行:
ls file0[78]?
若是要列出 file022 、file027 、file028 、file052 、file057 、file058 、file092 、file097 、file098 ,可以履行:
ls file0[259][278]
當然,不僅僅是 ls ,許多別的的下令行對象都可以使用方括號來進行通配操作。但在刪除文件、挪移文件、復制文件的進程中使用通配,你必要有一點橫向思維。
例如將 file010 到 file029 這 30 個文件復制成 archive010 到 archive029 這 30 個正本,弗成以如許履行:
cp file0[12]? archive0[12]?
由于通配只能針對已六合彩結果號碼經有的文件,而 archive 開首的文件并不存在,不克不及進行通配。
而這條下令
cp file0[12]? archive0[1..2][0..9]
也一樣不行,由于 cp 并不許可將多個文件復制到多個文件。在復制多個文件的環境下,只能將多個文件復制到一個指定的目次下:
mkdir archive
cp file0[12]? archive
這條下令是可以正常運轉的,但它只會把這 30 個文件以一樣的稱號復制到 archive/ 目次下,而這并不是咱們想要的結果。
若是你閱讀過我對于花括號的文章,你也許會記得可以使用 % 來截失字符串的末尾部門,而使用 # 則可以截失字符串的開首部門。
例如:
myvar="Hel大樂透快速對獎lo World"
echo Goodbye Cruel ${myvar#Hello}
就會輸入 Goodbye Cruel World ,由于 #Hello 將 myvar 變量中開首的 Hello 往失了。
在通配的進程中,也能夠使用這一個技能。
for i in file0[12]?;\
do\
cp $i archive${i#file};\
done
下面的第一行下令奉告 Bash 必要對一切 file01 開首或者者 file02 開首,且前面只跟一個恣意字符的文件進行操作,第二行的 do 以及第四行的 done 代表必要對這些文件都履行這一塊中的下令。
第三行便是現實的復制操作了,這里使用了兩次 $i 變量:第一次在 cp 下令中間接作為源文件的文件名使用,第二次則是截失文件名開首的 file 部門,然后在開首補上一個 archive ,也便是如許:
"archive" + "file019" - "file" = "archive019"
終極整個 cp 下令睜開為:
cp file019 archive019
最初,順帶申明一下反斜杠 \ 的作用是將一條龜齡令拆分紅多行,如許可以便539大樂透中獎號碼查詢利閱讀。
鄙人一節,咱們會相識方括號的更多用法,敬請存眷。
【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。
大樂透開獎直播 |