Shell編程--通配符[ * ? () [] {} \]

在 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章