电脑技术学习

对话 UNIX:第 2 部分: 做得多不如做得巧

dn001

$ ls *.c

  通配符 *(通常称为 star 而不是 asterisk)表示匹配任何字符序列。.c 文件扩展名是一种文本模式,它仅匹配点号加小写字母 c 的情况。所以,*.c 表示任何字符序列加上点号和小写字母 c。在给定了 *.c 之后,Shell 将查看当前目录(除非您提供一个起始绝对或相对路径名),找出所有匹配这个模式的文件名,将 *.c 扩展为文件名列表,然后将这个列表作为参数传递给 ls 命令。

  清单 2 基于 wget 的源代码文件演示了 *.c 的使用,wget 是一种命令行的下载实用工具。

  单 2. 使用通配符在目录中查找 C 源代码文件

$ ls *.c
alloca.c
ansi2knr.c
cmpt.c
connect.c
convert.c
...

  将通配符展开为匹配文件名列表的过程称为通配符匹配 (globbing),并且 Unix Shell 具有各种各样的通配符匹配操作符(所谓的 glob),以便帮助您描述所要查找的内容:

  通配符匹配操作符 *(星号)匹配任何字符或字符序列,包括空序列。

  通配符匹配操作符 ?(问号)匹配任何单个的字符。

  通配符匹配操作符 [ ](方括号)匹配任何括起来的字符。在方括号中,通过使用 -(连字符),比如 [a-z] 或者所有的小写字母,您可以引用某个范围的字符。

  (Z Shell 具有许多独特的通配符匹配操作符。有关 Z Shell 通配符匹配操作符的更多信息,请参见侧栏。)

  您还可以根据需要重复使用通配符匹配操作符。清单 3 提供了一些其他示例。

  在清单 3 中,命令 1 显示了该目录中所有的条目,包括长列表中那些以 .(点)开头的条目。(-a 选项显示了所谓的点文件;-1 选项表示在一列中列出所有的内容;而 -F 选项分别使用 /(正斜杠)和 *(星号)突出表示目录和可执行文件。)

标签: