shell中的特殊符號
# |
註釋作用, #! 除外,在參數替換 echo ${PATH#*:} 這裏不表示註釋, 數制轉換, 不表示註釋 echo $((2#101011)) |
; |
命令行分隔符, 可以在一行中寫多個命令. 例如p1;p2表示先執行p1,再執行p2 |
;; |
連續分號 ,終止 case 選項 |
. . |
隱藏文件前綴 |
. |
命令等價於source, . 表示當前目錄 .. 表示上一級目錄 正則表達式中作為單個字符匹配 |
"" |
|
‘‘ |
單引號,硬轉義,其內部所有的shell元字符、通配符都會被關掉。註意,硬轉義中不允許出現‘(單引號) |
\ |
反斜杠,轉義,去除其後緊跟的元字符或通配符的特殊意義 |
/ |
文件名分隔符, 除法操作 |
` (Esc 下邊的按鈕) |
後置引用, 命令替換 |
: |
空命令, 等價於 "NOP" : > data.log 等同於 cat /dev/null > data.log |
! |
取反操作符 != 不等於 |
* |
萬能匹配符, 正則表達式中 |
? |
正則表達式中, ? 匹配任意單個字符 |
$ |
變量符號 |
() |
命令組, (a=hello; echo $a), 在 () 中的命令列表將作為一個子 shell 來運行. 在() 中的變量, 由於在子shell中, 所以對於腳本剩下的部分是不可用的. |
{xxx,yyy,zzz} |
大括號擴展 |
{} |
代碼塊. 事實上, 這個結構創建了一個匿名的函數. 但是與函數不同的是, 在其中聲明的變量, 對於腳本的其他部分的代碼來說還是可見的. |
{}\; |
路徑名, 一般都是在 find 命令中使用, 註意; 用來結束find 命令序列的 –exec |
[] |
test 數組元素, 例如 array[1]=abc |
[[]] |
test 表達式本身放在[] 裏 |
(()) |
數學計算擴展 |
>& >>& >> < |
重定向 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目錄 |
! |
執行歷史記錄中的命令,"!$" 符號可以將上一條命令的參數傳遞給下一條命令參數,"!!"執行上一條命令 |
, |
這個符號常運用在運算當中當做"區隔"用途 |
== |
常在條件判斷式中看到,代表 "等於" 的意思。 |
^ |
這個符號在規則表達式中,代表行的 "開頭" 位置 |
>/dev/null 2>&1 |
標準輸出和標準錯誤都重定向到了/dev/null |
2>&1 >/dev/null |
意思是把標準錯誤輸出重定向到標準輸出後重定向到/dev/null |
1>&2 >/dev/null |
意思是把標準輸出重定向到標準錯誤後重定向到/dev/null |
&> /dev/null |
不管你是啥玩意兒文件描述符,通通重定向到/dev/null |
shell中的特殊符號