1. 程式人生 > >shell中的特殊符號

shell中的特殊符號

單詞 white 是把 col 位置參數 退出狀態 列表 font 添加

shell中的特殊符號

#

註釋作用, #! 除外,在參數替換 echo ${PATH#*:} 這裏不表示註釋, 數制轉換, 不表示註釋 echo $((2#101011))

;

命令行分隔符, 可以在一行中寫多個命令. 例如p1;p2表示先執行p1,再執行p2

;;

連續分號 ,終止 case 選項

. .

隱藏文件前綴

.

命令等價於source, . 表示當前目錄 .. 表示上一級目錄

正則表達式中作為單個字符匹配

""

雙引號,軟轉義,其內部只允許出現特定的shell元字符($,`,\)$用於變量值替換、`用於命令替換、\用於轉義單個字符

‘‘

單引號,硬轉義,其內部所有的shell元字符、通配符都會被關掉。註意,硬轉義中不允許出現‘(單引號)

\

反斜杠,轉義,去除其後緊跟的元字符或通配符的特殊意義

/

文件名分隔符, 除法操作

` (Esc 下邊的按鈕)

後置引用, 命令替換

:

空命令, 等價於 "NOP"
也可被認為是 shell 內建命令 true 作用相同, 例如: 死循環,在 if/then 語句中做占位符,在和 >(重定向操作符)一起使用時, 清空文件, 並沒有修改文件的權限, 例如: (如果文件不存在, 將會創建文件)

: > data.log 等同於

cat /dev/null > data.log

!

取反操作符 != 不等於

*

萬能匹配符, 正則表達式中
數學乘法
** 冪運算

?

正則表達式中, ? 匹配任意單個字符

$

變量符號
正則表達式中行結束符
${} 參數替換
$*,[email protected]

位置參數
$? 退出狀態
$$ 進程PID

()

命令組, (a=hello; echo $a), () 中的命令列表將作為一個子 shell 來運行. () 中的變量, 由於在子shell, 所以對於腳本剩下的部分是不可用的.
數組初始化: array=(element1, element2, element3)

{xxx,yyy,zzz}

大括號擴展
cat {file1,file2,file3} > combined_file, file1,file2,file3合並在一起並重定向到commbined_file. 大括號中不能有空格

{}

代碼塊. 事實上, 這個結構創建了一個匿名的函數. 但是與函數不同的是, 在其中聲明的變量, 對於腳本的其他部分的代碼來說還是可見的.

{}\;

路徑名, 一般都是在 find 命令中使用, 註意; 用來結束find 命令序列的 –exec

[]

test

數組元素, 例如 array[1]=abc
字符範圍, 在正則表達式中使用

[[]]

test 表達式本身放在[]

(())

數學計算擴展

>& >>& >> <

重定向
scriptname > filename 將標準輸出重定向到文件, 覆蓋原有內容
command &> filename 重定向 stdout stderr 到文件中
command >&2 重定向 stdout stderr
scriptname >> filename 將標準輸出追加到文件, 添加到文件尾端, 如果沒有文件, 則創建這個文件.

scriptname < filename從文件filename中獲取標準輸入

<< <<<

重定向, << 用在"here document", <<< 用在"here string"

\<, \>

正則表達式中的單詞邊界 grep ‘\<the\>‘ testfile

|

管道, 分析前邊命令的輸出, 並將輸出作為後邊命令的輸入,例:p1 | p2 p1的標準輸出作為p2的標準輸入

>|

強制重定向

||

邏輯或,前一個命令執行失敗後,才繼續執行下一個命令。例:p1 || p2 ;p1執行成功後,不執行p2,反之,才執行p2;

&

後臺運行命令, 一個命令後邊跟一個&, 將表示在後臺運行,最大好處是無需等待命令執行結束,就可以在同一命令行下繼續輸入命令

&&

邏輯與,前一個命令執行成功後,才繼續執行下一個命令。例:p1 && p2 ;p1執行成功後,才執行p2,反之,不執行p2;

~

home目錄

!

執行歷史記錄中的命令,"!$" 符號可以將上一條命令的參數傳遞給下一條命令參數,"!!"執行上一條命令

,

這個符號常運用在運算當中當做"區隔"用途

==

常在條件判斷式中看到,代表 "等於" 的意思。
if [ $vara == $varb ]

^

這個符號在規則表達式中,代表行的 "開頭" 位置

>/dev/null 2>&1

標準輸出和標準錯誤都重定向到了/dev/null

2>&1 >/dev/null

意思是把標準錯誤輸出重定向到標準輸出後重定向到/dev/null

1>&2 >/dev/null

意思是把標準輸出重定向到標準錯誤後重定向到/dev/null

&> /dev/null

不管你是啥玩意兒文件描述符,通通重定向到/dev/null

shell中的特殊符號