一:擴(kuò)展
其實每次你按下回車鍵時,bahs都會在執(zhí)行命令前對文本進(jìn)行多重的處理。舉個簡單的例子,*作為通配符的意思匹配任意多個字符,那么當(dāng)命令行中有通配符*時,在執(zhí)行命令之前,bash會把*進(jìn)行擴(kuò)展
echo命令用于顯示文本,也就是將文本參數(shù)內(nèi)容打印到標(biāo)準(zhǔn)輸出,如下echo ls
那么echo *.txt,就會把當(dāng)前目錄下所有以.txt結(jié)尾的文件名顯示出來
(1)路徑名擴(kuò)展
像剛才這種echo *.txt,使用通配符實現(xiàn)擴(kuò)展的機(jī)制稱為路徑名擴(kuò)展,這種功能非常靈活,可以配合通配符實現(xiàn)很多需求
比如找出當(dāng)前目錄下所有以大寫字母開頭的文件或文件夾

查看usr目錄下,眾多目錄里含有share目錄的路徑

(2)波浪線擴(kuò)展
其實這個大家也都知道,cd ~是回到用戶目錄,而echo ~是顯示用戶目錄

(3)算數(shù)擴(kuò)展
shell可以當(dāng)作計算器使用。使用算數(shù)擴(kuò)展要尊重這樣的格式:$((expression))

算數(shù)擴(kuò)展支持的算數(shù)運(yùn)算符如下

這里算數(shù)擴(kuò)展僅了解,更多要在后續(xù)介紹
(4)花括號擴(kuò)展
用過花括號擴(kuò)展的人不得不說它的強(qiáng)大
使用花括號擴(kuò)展時,花括號內(nèi)的以逗號分隔的字符會進(jìn)行分別處理
比如說我要一次性創(chuàng)建5個文件夾分別為test_1_test,test_3_test,test_5_test,test_7_test,test_9_test,一個一個創(chuàng)建太過麻煩,所以可以使用花括號擴(kuò)展

還有更神奇的用法,如果花括號中左右兩邊中間是..,那么他就會按照左右兩邊的規(guī)律進(jìn)行處理
比如說創(chuàng)建26個文件夾,文件夾名字分別是26個大寫字母

還比如生成1-10000的一萬個數(shù),則可寫作echo {1..10000} > test.txt

(5)參數(shù)擴(kuò)展
其實參數(shù)擴(kuò)展,我在另外一篇文章中就講到過了,就是如何顯示環(huán)境變量,使用到的就是ech $PATH

二:引用
第一部分我們講了,$命令作為擴(kuò)展的關(guān)鍵字,對命令進(jìn)行擴(kuò)展,但是有時會產(chǎn)生一些問題,比如說下圖我的目的是在屏幕上顯示 I have $5.00,但是$遇見了5,于是開始了參數(shù)擴(kuò)展,但是沒有這樣類型的環(huán)境變量,所以它被替換為了空字符串,于是輸出了I have .00

所以為了解決這樣的問題,shell提供了引用
(1)雙引號
雙引號是第一種引用,主要用來處理空格問題,只要文本在雙引號之中,Linux中除了$,/外,其余特殊符號將失去意義,也就是說除了參數(shù)擴(kuò)展,算數(shù)擴(kuò)展外其他擴(kuò)展將失效。
空格在命令行中具有很特殊的意義,空格空開的兩個字符很可能被當(dāng)做為兩個參數(shù)。如果必須要創(chuàng)建一個名字叫做Hello World.txt的文件夾,要是按照之前的方式創(chuàng)建,就會創(chuàng)建出兩個文件夾

如果把文件夾名字放在雙引號之內(nèi),將會忽略掉空格

但是注意雙引號對參數(shù)擴(kuò)展和算數(shù)擴(kuò)展無效

(2)單引號
如果要使得所有擴(kuò)展都不生效,那么就是用單引號

(3)轉(zhuǎn)義字符
我相信在這里,轉(zhuǎn)義字符就不需要我多說了吧,能看這種類型文章人,還會不知道轉(zhuǎn)義字符的作用嗎
本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://m.zmlzfb.cn/shbk/39466.html