欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
shell特殊字符匯總
#

注釋符號(Hashmark[Comments])

1.在shell文件的行首,作為include標記,#!/bin/bash; 

2. 其他地方作為注釋使用,在一行中,#后面的內容并不會(huì )被執行,除非; 

3. 但是用單/雙引號包圍時(shí),#作為#號字符本身,不具有注釋作用。

一個(gè)井號(#) 表示從左邊截取掉最短的匹配 

兩個(gè)井號(##) 表示從左邊截取掉最長(cháng)的匹配

;作為多語(yǔ)句的分隔符(Command separator [semicolon])。多個(gè)語(yǔ)句要放在同一行的時(shí)候,可以使用分號分隔。注意,有時(shí)候分號需要轉義。
;;連續分號(Terminator [double semicolon])。在使用case選項的時(shí)候,作為每個(gè)選項的終結符。在Bash version 4+ 的時(shí)候,還可以使用[;;&], [;&]
.

點(diǎn)號(dot command [period])。

1. 相當于bash內建命令source,如:

code
1
2
3
#!/bin/bash
. data-file
#包含data-file;

2. 作為文件名的一部分,在文件名的開(kāi)頭,表示該文件為隱藏文件,ls一般不顯示出來(lái)(ls -a 可以顯示);

3. 作為目錄名,一個(gè)點(diǎn)代表當前目錄,兩個(gè)點(diǎn)號代表上層目錄(當前目錄的父目錄)。注意,兩個(gè)以上的點(diǎn)不出現,除非你用引號(單/雙)包圍作為點(diǎn)號字符本身; 

4. 正則表達式中,點(diǎn)號表示任意一個(gè)字符。

"雙引號(partial quoting [double quote])。部分引用。雙引號包圍的內容可以允許變量擴展,也允許轉義字符的存在。如果字符串內出現雙引號本身,需要轉義,因此不一定雙引號是成對的。
'單引號(full quoting [single quote])。單引號括住的內容,被視為單一字符串,引號內的禁止變量擴展,所有字符均作為字符本身處理(除單引號本身之外),單引號必須成對出現。
,

逗號(comma operator [comma])。

1. 用在連接一連串的數學(xué)表達式中,這串數學(xué)表達式均被求值,但只有最后一個(gè)求值結果被返回。如:

code
1
2
3
4
#!/bin/bash
let t1=((a=5+1, b=7+2))
echo t1=$t1, a=$a, b=$b
## 這個(gè)$t1=$b;
2. 用于參數替代中,表示首字母小寫(xiě),如果是兩個(gè)逗號,則表示全部小寫(xiě),注意,這個(gè)特性在bash version 4的時(shí)候被添加的。例子:
code
1
2
3
4
a="ATest"
echo ${a,}
echo ${a,,}
## 前面輸出aTest,后面輸出的是atest。
\

反斜線(xiàn),反斜桿(escape [backslash])。

1. 放在特殊符號之前,轉義特殊符號的作用,僅表示特殊符號本身,這在字符串中常用; 

2. 放在一行指令的最末端,表示緊接著(zhù)的回車(chē)無(wú)效(其實(shí)也就是轉義了Enter),后繼新行的輸入仍然作為當前指令的一部分。

/

斜線(xiàn),斜桿(Filename path separator [forward slash])。

1.作為路徑的分隔符,路徑中僅有一個(gè)斜桿表示根目錄,以斜桿開(kāi)頭的路徑表示從根目錄開(kāi)始的路徑;

2.在作為運算符的時(shí)候,表示除法符號。如:

code
1
a=4/2
`反引號,后引號(Command substitution[backquotes])。命令替換。這個(gè)引號包圍的為命令,可以執行包圍的命令,并將執行的結果賦值給變量。如:
code
1
2
3
a=`dirname '/tmp/x.log'
## 后面dirname返回的結果會(huì )賦值給a,
## 注意,此處Mitchell特地使用了反引號和單引號,注意區別。
:

冒號(null command [colon])??彰?,這個(gè)命令什么都不做,但是有返回值,返回值為0(即:true)。這個(gè)命令的作用非常奇妙。

1. 可做while死循環(huán)的條件;

2. 在if分支中作為占位符(即某一分支什么都不做的時(shí)候);

3. 放在必須要有兩元操作的地方作為分隔符,如:

code
1
: ${username=`whoami`}

4. 在參數替換中為字符串變量賦值,在重定向操作(>)中,把一個(gè)文件長(cháng)度截斷為0(:>>這樣用的時(shí)候,目標存在則什么都不做),這個(gè)只能在普通文件中使用,不能在管道,符號鏈接和其他特殊文件中使用;

5. 甚至你可以用來(lái)注釋?zhuān)?后的內容不會(huì )被檢查,但:后的內容會(huì )被檢查,如果有語(yǔ)句如果出現語(yǔ)法錯誤,則會(huì )報錯);

6. 你也可以作為域分隔符,比如環(huán)境變量$PATH中,或者passwd中,都有冒號的作為域分隔符的存在;

7. 你也可以將冒號作為函數名,不過(guò)這個(gè)會(huì )將冒號的本來(lái)意義轉變(如果你不小心作為函數名,你可以使用unset -f : 來(lái)取消function的定義)。

!

感嘆號(reverse (or negate) [bang],[exclamation mark])。取反一個(gè)測試結果或退出狀態(tài)。

1. 表示反邏輯,比如后面的!=,這個(gè)是表示不等于;

2. 表示取反,如:ls a[!0-9] #表示a后面不是緊接一個(gè)數字的文件;

3. 在不同的環(huán)境里面,感嘆號也可以出現在間接變量引用里面; 

4. 在命令行中,可以用于歷史命令機制的調用,你可以試試!$,!#,或者!-3看看,不過(guò)要注意,這點(diǎn)特性不能在腳本文件里面使用(被禁用)。

*

星號(wildcard/arithmetic operator[asterisk])。

1. 作為匹配文件名擴展的一個(gè)通配符,能自動(dòng)匹配給定目錄下的每一個(gè)文件;

2. 正則表達式中可以作為字符限定符,表示其前面的匹配規則匹配任意次;

3. 算術(shù)運算中表示乘法。

**雙星號(double asterisk)。算術(shù)運算中表示求冪運算。

問(wèn)號(test operator/wildcard[Question mark])。

1. 表示條件測試;

2. 在雙括號內表示C風(fēng)格的三元操作符((condition?true-result:false-result)); 

3. 參數替換表達式中用來(lái)測試一個(gè)變量是否設置了值; 

4. 作為通配符,用于匹配文件名擴展特性中,用于匹配單個(gè)字符; 

5. 正則表達式中,表示匹配其前面規則0次或者1次。

$

美元符號(Variable substitution[Dollar sign])。前面已經(jīng)表示過(guò)一種意思。

1. 作為變量的前導符,用作變量替換,即引用一個(gè)變量的內容,比如:echo $PATH;

2.在正則表達式中被定義為行末(End of line)。

${}參數替換(Variable substitution)。請參考具體內容以獲得的詳細信息。
$'...’引用內容展開(kāi),執行單引號內的轉義內容(單引號原本是原樣引用的),這種方式會(huì )將引號內的一個(gè)或者多個(gè)[\]轉義后的八進(jìn)制,十六進(jìn)制值展開(kāi)到ASCII或Unicode字符。
$*, $@位置參數,這個(gè)在使用腳本文件的時(shí)候,在傳遞參數的時(shí)候會(huì )用到。兩者都能返回調用腳本文件的所有參數,但$*是將所有參數作為一個(gè)整體返回(字符串),而$@是將每個(gè)參數作為單元返回一個(gè)參數列表。注意,在使用的時(shí)候需要用雙引號將$*,$@括住。這兩個(gè)變量收$IFS的影響,如果在實(shí)作,要考慮其中的一些細節,更多請自行查閱參考位置參數(Positional Parameters)的相關(guān)信息。
$?此變量值在使用的時(shí)候,返回的是最后一個(gè)命令、函數、或腳本的退出狀態(tài)碼值,如果沒(méi)有錯誤則是0,如果為非0,則表示在此之前的最后一次執行有錯誤。
$$進(jìn)程ID變量,這個(gè)變量保存了運行當前腳本的進(jìn)程ID值。
()

圓括號(parentheses)。

1, 命令組(Command group)。由一組圓括號括起來(lái)的命令是命令組,命令組中的命令實(shí)在子shell(subshell)中執行。因為是在子shell內運行,因此在括號外面是沒(méi)有辦法獲取括號內變量的值,但反過(guò)來(lái),命令組內是可以獲取到外面的值,這點(diǎn)有點(diǎn)像局部變量和全局變量的關(guān)系,在實(shí)作中,如果碰到要cd到子目錄操作,并在操作完成后要返回到當前目錄的時(shí)候,可以考慮使用subshell來(lái)處理;

2. 用于數組的初始化。

{xx,yy,zz,...}花括號擴展(Brace Expansion)。 在命令中可以用這種擴展來(lái)擴展參數列表,命令將會(huì )依照列表中的括號分隔開(kāi)的模式進(jìn)行匹配擴展。注意的一點(diǎn)是,這花括號擴展中不能有空格存在,如果確實(shí)有必要空格,則必須被轉義或者使用引號來(lái)引用。例子:
code
1
echo {a,b,c}-{\ d," e",' f'}
{a..z}在Bash version 3時(shí)添加了這種花括號擴展的擴展,可以使用{A..Z}表示A-Z的所有字符列表,這種方式的擴展Mitchell測試了一下,好像僅適用于A(yíng)-Z,a-z,還有數字{minNo..maxNo}的這種方式擴展。
{}代碼塊(curly brackets)。這個(gè)是匿名函數,但是又與函數不同,在代碼塊里面的變量在代碼塊后面仍能訪(fǎng)問(wèn)。注意:花括號內側需要有空格與語(yǔ)句分隔。另外,在xargs -i中的話(huà),還可以作為文本的占位符,用以標記輸出文本的位置。
{} \;這個(gè){}是表示路徑名,這個(gè)并不是shell內建的,現在接觸到的情況看,好像只用在find命令里。注意后面的分號,這個(gè)是結束find命令中-exec選項的命令序列,在實(shí)際使用的時(shí)候,要轉義一下以免被shell理解錯誤。
[]

中括號(brackets)。

1. 測試的表示,Shell會(huì )測試在[]內的表達式,需要注意的是,[]是Shell內建的測試的一部分,而非使用外部命令/usr/bin/test的鏈接;

2. 在數組的上下文中,表示數組元素,方括號內填上數組元素的位置就能獲得對應位置的內容,如:

code
1
2
Array[1]=xxx
echo ${Array[1]};
3. 表示字符集的范圍,在正表達式中,方括號表示該位置可以匹配的字符集范圍。
[[]]雙中括號(double brackets)。這個(gè)結構也是測試,測試[[]]之中的表達式(Shell的關(guān)鍵字)。這個(gè)比單中括號更能防止腳本里面的邏輯錯誤,比如:&&,||,<,>操作符能在一個(gè)[[]]里面測試通過(guò),但是在[]卻不能通過(guò)。[[]]里面沒(méi)有文件名擴展(filename expansion)或是詞分隔符(Word splitting),但是可以用參數擴展(Parameter expansion)和命令替換(command substitution)。不用文件名通配符和像空白這樣的分隔符。注意,這里面如果出現了八進(jìn)制,十六進(jìn)制等,shell會(huì )自動(dòng)執行轉換比較。
$[...]詞表達表示整數擴展(integer expansion),在方括號里面執行整數表達式。例:
code
1
2
3
4
5
a=3
b=7
echo $[$a+$b]
echo $[$a*$b]
##返回是10和21
(())雙括號(double parentheses)。 表示整數擴展(integer expansion)。功能和上面的$[]差不多,但是需要注意的是,$[]是會(huì )返回里面表達式的值的,而(())只是執行,并不會(huì )返回值。兩者執行后如果變量值發(fā)生變化,都會(huì )影響到后繼代碼的運行??蓪ψ兞抠x值,可以對變量進(jìn)行一目操作符操作,也可以是二目,三目操作符。
>,&<,>&,>>,<,<>重定向(redirection)。
code
1
scriptname >filename
重定向scriptname的輸出到文件filename中去,如果文件存在則覆蓋;
code
1
command &>filename
,會(huì )重定向command的標準輸出(stdout)和標準錯誤(stderr)到文件filename中;
code
1
command >&2
把command的標準輸出(stdout)重定向到標準錯誤(stderr)中;
code
1
scriptname >>filename
,吧scriptname的輸出(同>)追加到文件filenmae中,如果文件不存在則創(chuàng )建。
code
1
[i]<>filename
打開(kāi)filename這個(gè)文件用來(lái)讀或者寫(xiě),并且給文件指定i為它的文件描述符(file descriptor),文件不存在就會(huì )創(chuàng )建。
(command)>,<(command)這是進(jìn)程替換(Process Substitution)。使用的時(shí)候注意,括號和<,>之間是不能有空格的,否則報錯。其作用有點(diǎn)類(lèi)似通道,但和管道在用法上又有些不同,管道是作為子進(jìn)程的方式來(lái)運行的,這個(gè)命令會(huì )在/dev/fd/下面產(chǎn)生類(lèi)似/dev/fd/63,/dev/fd/62這類(lèi)臨時(shí)文件,用來(lái)傳遞數據。Mitchell個(gè)人猜測之所以用這種方法來(lái)傳遞,是因為前后兩個(gè)不屬于同一個(gè)進(jìn)程,因此需要用共享文件的方式來(lái)傳遞資料(這么說(shuō)其實(shí)管道也應該有同樣的文件?)。網(wǎng)上有人說(shuō)這個(gè)只是共享文件而已,但是經(jīng)過(guò)測試,發(fā)現雖然有/dev/fd/63這樣的文件產(chǎn)生,但是這個(gè)文件其實(shí)是指向pipe:[43434]這樣的通道的鏈接。
<<雙小于號(here-document[double less then marks])。這個(gè)也被稱(chēng)為Here-document,用來(lái)將后繼的內容重定向到左側命令的stdin中。<<可以節省格式化時(shí)間,別且使命令執行的處理更容易。在實(shí)作的時(shí)候只需要輸入<<和終止標志符,而后(一般是回車(chē)后)你就可以輸入任何內容,只要在最后的新行中輸入終止標志符,即可完成數據的導入。使用here-document的時(shí)候,你可以保留空格,換行等。如果要讓shell腳本更整潔一點(diǎn),可以在<<和終止符之間放上一個(gè)連字符(-)。
<<<三個(gè)小于號(here-strings)。Here-字串和Here-document類(lèi)似,here-strings語(yǔ)法:command [args] <<<["]$word["];$word會(huì )展開(kāi)并作為command的stdin。
<,>小于,大于號(ASCII Comparison)。ASCII比較,進(jìn)行的是變量的ASCII比較,字串?數字?呃...這個(gè)...不就是ASCII比較么?
\<...\>詞界符(word boundary)。這個(gè)是用在正則表達式中的一個(gè)特殊分隔符,用來(lái)標記單詞的分界。比如:the會(huì )匹配there,another,them等等,如果僅僅要匹配the,就可以使用這個(gè)詞界符,\<the\>就只能匹配the了。
|管道(pipe)。管道是Linux,Unix都有的概念,是非?;A,也是非常重要的一個(gè)概念。它的作用是將管道前(左邊)的命令產(chǎn)生的輸出(stdout)作為管道后(右邊)的命令的輸入(stdin)。如:ls | wc l,使用管道就可以將命令連接在一起。注意:管道是每一個(gè)進(jìn)程的標準輸出都會(huì )作為下一個(gè)命令的標準輸入,期間的標準輸出不能跨越管道作為后繼命令的標準輸入,如:
cat filename | ls -al | sort##想想這個(gè)的輸出? 同時(shí),管道是以子進(jìn)程來(lái)運行的,所以管道并不能引起變量改變。
>|強制重定向(force redirection)。這會(huì )強制重寫(xiě)已經(jīng)存在的文件。
&與號(Run job in background[ampersand])。如果命令后面跟上一個(gè)&符號,這個(gè)命令將會(huì )在后臺運行。有的時(shí)候,腳本中在一條在后臺運行的命令可能會(huì )引起腳本掛起,等待輸入,出現這種情況可以在原有的腳本后面使用wait命令來(lái)修復。
&&,||邏輯操作符(logical operator)。在測試結構中,可以用這兩個(gè)操作符來(lái)進(jìn)行連接兩個(gè)邏輯值。||是當測試條件有一個(gè)為真時(shí)返回0(真),全假為假;&&是當測試條件兩個(gè)都為真時(shí)返回真(0),有假為假。
-減號,連字符(Hyphen/minus/dash)。 1. 作為選項,前綴[option, prefix]使用。用于命令或者過(guò)濾器的選項標志;操作符的前綴。如:
code
1
2
3
4
5
6
7
8
9
## COMMAND -[選項列表] 
ls -al
sort -dfu $file
set -- $variable
 
if [ $file -ot $file2 ]
then
    echo "$file is older than $file2."
fi
2. 用于stdin或者stdout的重定向的源或目的[dash].在tar沒(méi)有bunzip2的程序補丁時(shí),我們可以這樣:
code
1
2
3
bunzip2 linux-2.6.13.tar.bz2 | tar xvf - 
##將前面解壓的數據作為tar的標準輸入
##(這里使用一個(gè)-表示)
注意:在實(shí)作的時(shí)候,如果文件名是以[-]開(kāi)頭的,那么在加上這個(gè)作為定向操作符的時(shí)候,可能會(huì )出錯,此時(shí)應該為文件加上合適的前綴路徑,以避免這種情況發(fā)生,同樣的,在echo變量的時(shí)候,如果變量是以[-]開(kāi)始,那么可能也會(huì )產(chǎn)生意想不到的結果,為了保險起見(jiàn),可以使用雙引號引用標量:
code
1
2
3
var="-n"
echo $var
## 試試看有什么輸出?

還有,這種表示方法不是Bash內建的,要達到此點(diǎn)的這種效果,需要看你使用的軟件是否支持這種操作;

3. 表示先前的工作目錄(previous working directory),因此,如果你cd到其他目錄下要放回前一個(gè)路徑的時(shí)候,可以使用cd -來(lái)達到目的,其實(shí),這里的[-]使用的是環(huán)境變量的$OLDPWD,注意:這里的[-]和前一點(diǎn)是不同的; 

4. 減號或者負號,用在算術(shù)操作中。

=

等號(Equals)。

1. 賦值操作,給變量賦值,么有空格在等號兩側;

2. 在比較測試中作為比較符出現,這里要注意,如果在中括號中作為比較出現,需要有空格符在等號左右兩側。

+

加號(Plus)。

1. 算術(shù)操作符,表示加法;

2. 在正則表達式中,表示的是其前的這個(gè)匹配規則匹配最少一次;

3.在命令或過(guò)濾器中作為選項標記,在某些命令或者內置命令中使用+來(lái)啟用某些選項,使用-來(lái)禁止;

4. 在參數替換(parameter substitution)中,+前綴表示替代值(當變量為空的時(shí)候,使用+后面的值)

%

百分號(modulo[percent sign])。

1.在算術(shù)運算中,這個(gè)是求模操作符,即兩個(gè)數進(jìn)行除法運算后的余數;

2. 在參數替換(parameter substitution)中,可以作為模式匹配。例子:

3.一個(gè)百分號(%)表示從右邊截取最短的匹配
4.兩個(gè)百分號表示(%%)表示從右邊截取最長(cháng)的匹配 
code
1
2
3
4
5
6
7
p=b*9
var="abcd12345abc479"
echo ${var%p}, ${var%%p}
##從右邊開(kāi)始查找(想想從左是那個(gè)符號?)
##任何在b和9之間的內容(含)
##第一個(gè)是找到最短的符合匹配項
##后一個(gè)是找最大符合的匹配項(貪婪匹配?)
~波浪號(Home directory[tilde]),這個(gè)和內部變量$HOME是一樣的。默認表示當前用戶(hù)的家目錄(主目錄),這個(gè)和~/效果一致,如果波浪號后面跟用戶(hù)名,表示是該用戶(hù)的家目錄,
~+當前的工作目錄(current working directory)。這個(gè)和內置變量$PWD一樣。
~-前一個(gè)工作目錄(previous working directory)。這個(gè)和內部變量$OLDPWD一致,之前的[-]也一樣。
=~Bash 版本3中有介紹,這個(gè)是正則表達式匹配??捎迷赱[]]測試中,比如:
var="this is a test message."[[ "$var" =~ tf*message ]] && echo "Sir. Found that." || echo "Sorry Sir. No match be found."##你可以修改中間的正則表達式匹配項,正則表達式可以但不一定需要使用雙引號括起來(lái)。
^

脫字符(caret)。

1. 在正則表達式中,作為一行的行首(beginning-of-line)位置標志符;

2. 在參數替換(Parameter substitution)中,這個(gè)用法有兩種,一個(gè)脫字符(${var^}),或兩個(gè)(${var^^}),分別表示第一個(gè)字母大寫(xiě),全部大寫(xiě)的意思(Bash version >=4)。

空白空白符(Whitespace)??瞻追粌H僅是指空格(spaces),還包括制表符(tabs),空行(blank lines),或者這幾種的組合??捎米龊瘮档姆指舴?分隔命令或變量,空行不會(huì )影響腳本的行為,因此可以用它來(lái)規劃腳本代碼,以增加可讀性,在內置的特殊變量$IFS可以用來(lái)針對某些命令進(jìn)行輸入的參數進(jìn)行分割,其默認就是空白符。在字符串或變量中如果有空白符,可以使用引號來(lái)規避可能的錯誤。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux中的(),(()),[],[[]],{}的作用
shell中的特殊字符
第7章 shell程序設計
幾個(gè)shell程序設計小知識(shell常識部分) - Shell討論區/保留帖 - - ChinaUnix.net
Bash 編程
Shell 中的中括號用法總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久