在 Shell命令中,通常會使用通配符表達式來匹配一些文件
*
含義:匹配任意字符
例如:a*c
a與c之間可以有任意長度的任意字符, 也可以一個也沒有, 如aabcc, axyzc, a012c 等等
ls /opt/a*b
abc addc .....
?
含義:匹配任意一個字符
例如:a?c
a與c之間只能匹配一個長度字符, 也可以一個也沒有, 如abc, adc, aec, a_c。
ls /opt/a?c
abc adc .....
()
含義:在小括號內執行shell命令,這個執行用的是子shell,等於又啓用了一個shell,這樣就不會影響原來的shell環境。
例如:子shell 執行 (umask :0000) ,而環境的shell的 umask 依然是 :0022
[]
含義:匹配中括號內任意一個字符
例如: a[xyz]c
a與c之間必須也只能有一個字符, 但只能是 x 或 y 或 z, 如: axc, ayc, azc。c。
**ps:**如果加一個!
就是取反的意思
ls /opt/a[xyz]
axc ayc azc
ls /opt/a[!xy]
azc
{}
含義:取大括號內的集合
例如:{string1,string2,...}
匹配 sring1 或 string2 (或更多)其一字符串 a{abc,xyz,123}b a與b之間只 能是abc或xyz或123這三個字符串之一。
ls /opt/a{
abc,xyz}b
aabcb axyzb
拷貝相同路徑文件時:
cp /opt/abc/123.txt /opt/abc/456.txt
可以用大括號省去路徑,改成:
cp /opt/abc/{
123.txt,456.txt}
\
含義:轉義符,可以分換字符原來的本意
例如:\n
n就不在是“n” 就變成了換行 \*
" * " 就在是通配符 而代表普通的 * 號
echo -e "anc"
anc
echo -e "a\nc"
a
c