Linux Shell特殊字元和控制字元大全
阿新 • • 發佈:2018-11-25
# 註釋
表示註釋 #註釋
在引號中間和\#等表示#本身
echo ${PATH#*:} # 引數替換,不是一個註釋
echo $(( 2#101011 )) # 數制轉換,不是一個註釋
; 分隔
命令分隔,在一行中寫多個命令 echo "aa" ; echo "bb"
在條件中的if和then如果放在同一行,也用;分隔
;; case條件的結束
. 命令
相當於source命令
命令:source
檔名的字首,隱藏檔案
目錄:.當前目錄,..父目錄
正則表示式:匹配任意單個字元
“”
部分引用 支援萬用字元擴充套件
’ ‘
全引用,不進行萬用字元擴充套件
\
轉義
/
目錄分隔符
,
多個命令都被執行,但返回最後一個
`
後置引用
: 操作符
- 空操作
- 死迴圈: while :
- 在if/then中表示什麼都不做,引出分支
- 設定預設引數: : ${username=
whoami
} - 變數替換: :
HOSTNAME? {USER?} ${MAIL?} - 在和 > (重定向操作符)結合使用時,把一個檔案截斷到0 長度,沒有修改它的許可權;如果檔案在之前並不存在,那麼就建立它.如:
: > data.xxx #檔案”data.xxx”現在被清空了. 與 cat /dev/null >data.xxx 的作用相同 然而,這不會產生一個新的程序,因為”:”是一個內建命令.
-在和>>重定向操作符結合使用時,將不會對想要附加的檔案產生任何影響.
如果檔案不存在,將建立.
*
- 匹配0個或多個字元;
- 數學乘法;
- **冪運算
? 匹配任意一個字元;但在((a>b?a:b))表示c語言中的三目運算
$
取變數的值 echo $PATH
正則表示式中表示行的結尾
${} 引數替換 ${PAHT}
$* 所有引數
$# 引數個數
$$ 程序的ID
$? 程序的返回狀態
( )
命令組,在一個子Shell中執行 (a=3;echo $a) 其中定義的變數在後面不可用
陣列初始化: array=(a,b,c)
{ } 程式碼塊,即一個匿名函式,但其中定義的變數在後面依然可用
{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;
[ ]
- 測試 [-z $1]
- 陣列元素 a[1]=’test’
- [[]]表示測試 使用[[ … ]]條件判斷結構, 而不是[ … ], 能夠防止指令碼中的許多邏輯錯誤. 比如, &&, ||, <, 和> 操作符能夠正常存在於[[ ]]條件判斷結構中, 但是如果出現在[ ]結構中的話, 會報錯.
- (( ))數學運算
- 在正則表示式中表示範圍 [a-z]
< << > 重定向和程序替換 ls -al > a.txt
< 還用在ASCII比較 if [[ “
veg1"<" veg2” ]]
\<,> 正則表示式中的單詞邊界.如:bash$grep ‘\
| 管道
| 強制重定向(即使設定了noclobber 選項–就是-C 選項).這將強制的覆蓋一個現存檔案.
|| 邏輯或操作 ;用在兩個命令之間的時候,表示在前一個命令結束時,若返回值為 false,繼續執行下一個命令
&& 邏輯與;用在兩個命令之間的時候,表示在前一個命令結束時,若返回值為 true,繼續執行下一個命令
& 後臺執行
-
- 引數選項
- 減號
- 重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
先前的工作目錄 cd -
注:使用-開頭的檔名和變數名可能會出現一些問題