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

猜你喜欢

转载自blog.csdn.net/qq_26129413/article/details/111334369