今天我將說明一些Bash中常用或重要的特殊符號
/
)在windows中以反斜線(\)作為分隔
\
)跳脫字元 | 擴充後的結果 |
---|---|
\a | 響鈴 |
\b | 退格 |
\e | 跳脫 |
\f | 換頁 |
\n | 換行 |
\r | 回車 |
\t | 水平製表符 |
\v | 垂直製表符 |
\ | 反斜縣 |
' | 單引號 |
" | 雙引號 |
\nnn | 八進位值為nnn的字元 |
\xHH | 十六進位值為HH的字元 |
\uHHHH | unicode為HHHH的字元 |
\uHHHHHHHH | unicode為HHHHHHHH的字元 |
&
): 使&前面的命令在背景執行,然後在前景執行&後面的命令若有多個
&
則使除最後的命令外的命令在背景執行
若要使命令在背景,則單獨在結尾使用&
% [<jobID>]
)
fg %[jobID]
''
,""
): 將文字作為字串處理而不是檔名、命令名稱等
倒引號(
``
)也能做到相同功能,不過已被棄用(deprecated)
! <num>
).
source
這個命令的別名[[...]]
)$(cmd)
: 執行括號中命令,並返回結果echo $(whoami) # 等價於 echo <username>
&&
: 當前面的命令執行成功時才執行後面的命令||
: 當前面的命令執行成功時,後面的命令不會被執行~
)
~
: 獲取$HOME
的值~/foo
: 等價於$HOME/foo
~<user>/foo
: 等價於的$HOME中的foo子目錄~+/foo
: 等價於目前位置中的foo目錄{...}
): 主要用於生成字串組合與範圍
premble+{COMMA_SEPARATED_TEXT}+postscript
// 字串組合(使用sed是為了將擴充的分隔符從空格改為換行)
$ echo I_use_{Arch,Ubuntu,Fedora,Redhat}_BTW | sed 's/\ /\n/g'
I_use_Arch_BTW
I_use_Ubuntu_BTW
I_use_Fedora_BTW
I_use_Redhat_BTW
//範圍生成: 語法為{x..y[..incr]},也可以用在for loop
$ for i in {1..10..2}
> do
> echo $i
> done
1
3
5
7
9
// 排列組合
$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf
// 跟*(萬用字元)一起使用時,先解析花括號然後解析萬用字元
ls *.{jp{e,}g,png} # 可以巢狀括展
其實還有Shell Parameter Expansion,不過礙於篇幅只好等講SHELL script時再介紹
GNU manual
Wiki
Bash Script 語法解析. 各種單雙括弧、特殊符號語法 | by Vince | vswe | Medium