總結Shell中的特殊字符

這篇文章主要給大家總結了關于shell中特殊字符的相關資料,文中包括分好、&、#、!、$、大于號、單雙引號等等一系列特殊字符的用法,通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

眾所周知shell既是類Unix操作系統(tǒng)的命令解析器,用于解釋執(zhí)行用戶輸入的一連串命令,它類似于DOS下的command和后來Windows的cmd.exe。同時shell也是一種程序設計語言。作為命令解釋型的腳本語言,它交互式解釋和執(zhí)行用戶輸入的命令或者自動地解釋和執(zhí)行預先設定好的一連串的命令;作為程序設計語言,它預定義了各種環(huán)境變量,保留了一些關鍵字以及一些特殊字符的含義,并提供了許多在高級語言中才具有的控制結構,包括循環(huán)和分支判斷。

本文將給大家介紹關于Shell特殊字符用法的相關內(nèi)容,話不多說,來一起看看詳細的介紹:

1、;分號

連續(xù)運行命令

#?ifdown?eth0;ifup?eth0

2、| 管道

正則表達式中表示或者

#?echo?"ooooee"?|egrep?'(oo|ee)'{2}?表示匹配?oooo?或者?eeee?的字符

前面命令的標準輸出作為后面命令的標準輸入

#?ifconfig|grep?eth0?表示ifconfig查出來的信息然后過濾出eth0的這一行

3、&

將命令放到后臺執(zhí)行

#?mysqld_safe?--user=mysql?&?將MySQL放到后臺啟動

表示標準輸出和標準錯誤輸出

#?ifconfig?&>/dev/null?將ifconfig執(zhí)行得到的結果輸出到/dev/null里面

4、&&

前面命令返回值為0才執(zhí)行后面的命令

#?ls?&&?echo?"ok"

5、||

前面命令返回值為非0才執(zhí)行后面的命令

#?lls?||?echo?"ok"

6、# 井號

# 表示注釋

$# 表示位置參數(shù)的個數(shù)

#?echo?$#  0

${#變量名} 表示變量的長度

#?a='hello'  #?echo?${#a}  5

${#變量名[@]} 表示數(shù)組的個數(shù)

#?a=(1?2?3)  #?echo?${#a[@]}  3

7、!驚嘆號

將命令或者條件表達式的返回值取反

#?if?!?[?1<p>執(zhí)行歷史命令<br></p><p class="jb51code"><br></p><pre class="brush:bash;">#?history?  1?ls  2?tail?test1.txt  3?mysql?-uroot?-p123  4?ls?/tmp/  5?cd?/tmp/  [root@localhost?~]#?!994  ls?/tmp/  account.sql?data.sql?mysql.sock?t1.txt?t2.txt

vi或者ftp中執(zhí)行外部shell命令

例如:在vim中,想要執(zhí)行一條命令,就在末行模式,輸入!感嘆號后面加上要執(zhí)行的命令

間接應用變量

例如:${!a} —- 間接取b 的值

8、$ 美元符號

取變量的值

#?a=10  #?echo?$a  10

正則表達式表示行尾

egrep?':$'?/etc/inittab?  egrep?‘^hello$'?file

9、> 大于號

輸出重定向

echo?'123'?&gt;test.txt?表示將123?輸入到文件test.txt中?條件測試中的大于號

11、

輸入重定向

條件測試中的小于號

= 等號

變量賦值 – 例如:設置變量a=10

條件測試中的等號 – 例如:[ a=b ] 判斷變量a是否等于b

數(shù)值比較 == – 例如:(( a==20 )) 判斷變量a是否等于20

12、+ 加號

算術運算中的加號 – 例如:1+3

正則表達式中1個或多個前面的字符 – 例如:ab+c 表示匹配ab和c之間有1個或者多個 字符

13、>>

輸出重定向追加 – 例如:echo “123” >> test.txt 將123追加到文件test.txt中

14、

here document

例如:

#?passwd??123  &gt;?123  &gt;?end

更改用戶 root 的密碼 。

15、- 減號

算術運算中的減號 – 例如:10-2

命令的選項 – 例如:ls -l

上一次工作目錄 – 例如:cd –

通配符和正則表達式中表示范圍 – 例如:[a-z]

tar?-cvf?-?/home?|?tar?-xvf?-

表示輸出流或輸入流

將前面的輸出 ,通過管道交給后面的命令,前面的壓縮,后面的解壓

16、” 單引號

解決變量賦值空格的問題

例如:a=’1 2′

阻止shell替換

17、”” 雙引號

解決變量賦值空格的問題

例如:a=”1 2″

阻止shell部分字符替換,對$、!等無效

18、“ 反引號 相當于 $()

命令行替換

例如:可以設變量a=`ls`

19、% 百分號

算術運算中的模運算

例如:echo $((100%10)) 就是100除以10的余數(shù)為0

vi中替換操作中表示所有行 (末行模式下,替換所有前面加 %)

例如:在末行模式下輸入 :% s/D/d 表示將文本中的所有的D替換為d

20、() 單圓括號

子shell中執(zhí)行命令,會繼承父shell的變量

括起數(shù)組元素

例如:定義一個數(shù)組 a=(1 2 3 4)

21、(()) 雙圓括號

算術運算

例如: echo $((10/2)) 結果就是5

整數(shù)比較測試

例如: (( 10>2 )) 判斷10是否大于2

22、[] 單方括號

通配符和正則中表示匹配括號中的任意一個字符

例如: [abc] 表示匹配abc中的任意一個字符

條件測試表達式

例如: [ -f /etc/passwd ] // 測試是不是文件

數(shù)組中下標括號

例如:echo ${a[0]} 表示取數(shù)組中下標為0的值

23、[[]] 雙方括號

字符串比較測試

例如: [[a=b]] 用來字符串的比較

24、. 英文句點號

正則中表示任意1個字符

例如:a…b 表示 匹配 a和b之間夾三個字符的字符串

當前shell執(zhí)行腳本命令

例如: ./test.sh 執(zhí)行當前路徑下的shell腳本test.sh

表示當前目錄

例如:cd ./bgk 進入當前目錄下的bgk目錄下

25、{} 大括號

通配符擴展 abc{1,2,3}

正則表達式中表示范圍

例如:a{3} 匹配3個 a

for i in {1…10} 循環(huán)指定范圍

匿名函數(shù){ cmd1;cmd2;cmd3;} &> /dev/null

{ } 里面的命令,是在當前shell執(zhí)行

注意: { } 第一條命令前面要有空格,后面的命令要有分號

括起變量名 ${abc}a

26、/ 正斜杠

算術運算中的除法

例如:echo $((10/2)) 結果就是5

根目錄或路徑分割符

例如:cd /usr/local/ 表示路徑

27、^

在通配符中表示取反

例如:[^abc] 表示匹配除了abc外的任意一個字符

在正則表達式中表示以什么開頭

例如:

egrep?‘^hello$'?file

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享