常见用法
*
>=0个字符组成地任何字符串,但不匹配.
开头的文件,即隐藏文件
# csdn @ edu in ~ [11:49:21] C:2
$ ls
1 2 4 a c Code
# csdn @ edu in ~ [11:49:22]
$ ls C*
aaa
?
任意1个字符
# csdn @ edu in ~ [11:48:16]
$ touch Code/aaa
# csdn @ edu in ~ [11:48:25]
$ ls Cod?
aaa
[abc...]
‘[’ ']'中的任何一个字符
# csdn @ edu in ~ [11:47:24]
$ ls
1 2 4 a c Code
# csdn @ edu in ~ [11:47:43]
$ ls [a-z]
a:
c:
[^abc...]
‘[’ ']'中的以外任何一个字符
# csdn @ edu in ~ [11:34:24] C:2
$ ls
1 2 4 a c Code
# csdn @ edu in ~ [11:39:35] C:1
$ ls [^a]
1:
2:
4:
c:
[[:alpha:]]
任何字母字符
# csdn @ edu in ~ [23:53:34]
$ ls
Code
# csdn @ edu in ~ [23:53:41]
$ ls Code
a
# csdn @ edu in ~ [23:53:49]
$ ls Cod[[:alpha:]]
a
[a-z]
任意小写字母 [A-Z]
任意大写字母
# csdn @ edu in ~ [23:55:37]
$ ls
Code
# csdn @ edu in ~ [23:55:54]
$ ls Code
a
# csdn @ edu in ~ [23:55:58]
$ ls Cod[a-z]
a
# csdn @ edu in ~ [23:56:01]
$ ls [A-Z]ode
a
[[:lower:]]
任何小写字符
# csdn @ edu in ~ [11:34:24] C:2
$ ls
1 2 4 a c Code
# csdn @ edu in ~ [11:38:38]
$ ls [[:lower:]]
a:
c:
[[:upper:]]
任何大写字符
# csdn @ edu in ~ [23:53:34]
$ ls
Code
# csdn @ edu in ~ [23:53:41]
$ ls Code
a
# csdn @ edu in ~ [23:58:29] C:1
$ ls [[:upper:]]ode
a
[[:alnum:]]
任何字母字符或数字
# csdn @ edu in ~ [0:09:06]
$ ls
c1 Code
# csdn @ edu in ~ [0:09:07]
$ ls c1
w
# csdn @ edu in ~ [0:09:21]
$ ls c[[:alnum:]]
w
# csdn @ edu in ~ [0:09:34]
$ ls [[:alnum:]]1
w
[[:punct:]]
除括号和字母数字以外的任何可打印字符
# csdn @ edu in ~ [0:10:21]
$ ls
c@ c1 Code
# csdn @ edu in ~ [0:10:22]
$ ls c@
sd
# csdn @ edu in ~ [0:10:25]
$ ls c[[:punct:]]
sd
[[:digit:]]
[0-9]
从0-9的任何单个数字
# csdn @ edu in ~ [0:10:33]
$ ls
c@ c1 Code
# csdn @ edu in ~ [0:10:53]
$ ls c1
w
# csdn @ edu in ~ [0:11:02]
$ ls c[[:digit:]]
w
[[:space:]]
任何一个空白字符(制表符、换行符、回车符、换页符、空格)
这个字符的实例有点难想,暂时没想到,大家如果有想到的可以交流交流
我试过用:vi aa //aa这个文件里有一些空格和制表符
然后用grep [[:space:]] aa
输出没有匹配项
也就是说[[:space:]]是一个正确的匹配模式,欢迎交流~
[:black:]
水平空白字符
这个与[[:space:]]一样没有想到实例,但是没有报错,所以[:black:]也是正确的匹配模式
[:punct:]
标点符号
# csdn @ edu in ~ [0:19:03]
$ ls
a a, aa c@ c1 Code d
# csdn @ edu in ~ [0:19:04]
$ ls a,
asds
# csdn @ edu in ~ [0:19:08]
$ ls a[:punct:]
zsh: no matches found: a[:punct:]
嘶,这个不知道为什么,但[:punct:]却是正确的匹配模式,欢迎批评指正~
[:cntrl:]
控制(非打印)字符
也找不到实例
[:graph:]
图形字符
emm,找不到实例
[:xdigit:]
十六进制字符
这个不知道要怎么表示
~
当前用户家目录
# csdn @ edu in ~ [0:23:07]
$ cd a
# csdn @ edu in ~/a [0:23:12]
$ cd ~
# csdn @ edu in ~ [0:23:16]
$
~+
和 .
当前工作目录
# csdn @ edu in ~/Code [0:24:29]
$ pwd
/home/csdn/Code
# csdn @ edu in ~/Code [0:24:37]
$ ls ~+
# csdn @ edu in ~/Code [0:24:45]
$ ls .
...$
表示以...
结尾
^$
表示空行
{}
与[]
的区别:
{}
中的内容进行全匹配,即便没有也会打印
[]
中的内容进行正确匹配,只会打印有的内容
# csdn @ edu in ~ [11:32:52]
$ ls
1 2 4 a c Code
# csdn @ edu in ~ [11:32:54]
$ ls [1-4]
1:
2:
4:
# csdn @ edu in ~ [11:33:01]
$ ls [a-c]
a:
c:
# csdn @ edu in ~ [11:33:10]
$ ls {1..4}
ls: cannot access 3: No such file or directory
1:
2:
4:
# csdn @ edu in ~ [11:33:24] C:2
$ ls {a,b,c}
ls: cannot access b: No such file or directory
a:
c:
对于{a..c}
并不代表从a到c,但{1..4}
则表示1到4(在csdn的Linux平台上测试所得)