4.3 shell的文件通配符处理

  • 星号 *
    • 匹配任意长度的文件名字符串(包括空字符串)
    • 点字符(.),当它作为文件名或路径名分量的第一个字符时,必须显式匹配
    • 斜线(/)也必须显式匹配
    • 例:*file匹配file,makefile,不匹配.profile文件

try*c 匹配try1.c try.c try.basic

  • 问号 ?
    • 匹配任一单字符
  • 方括号 [ ]
    • 匹配括号内任一字符,也可以用减号指定一个范围
    • 例: [A-Z] .[ch] [Mm]akefile//注意没有,、等来分割[]中的字符!
  • 注意
    • 文件名通配符规则与正则表达式的规则不同,应用场合不同
    • 不同种类shell通配符规则会略有些差别

4.3.1shell与kernel

  • shell
    • shell是一个用户态进程
    • 对用户提供命令行界面
    • 使用操作系统核心提供的功能
  • kernel:操作系统核心
    • 管理系统资源(包括内存,磁盘等)运行在核心态
    • 通过软中断方式对用户态进程提供系统调用接口

4.3.2main的两个参数

main(int argc, char *argv[]

4.3.3 文件名通配符

  • 文件名通配符的处理由shell完成,分以下三步
    • 在shell提示符下,从键盘输入命令,被shell接受
    • shell对所键入内容作若干加工处理,其中含有对文件通配符的展开工作(文件名生成),生成结果命令
    • 执行前面生成的结果命令

【坑爹的例子】

  • 设当前目录下只有try.c,zap.c,arc.c三文件
    • 键入内容 cat *.c
    • 实际执行 cat arc.c try.c zap.c (按字典序)
    • 对命令cat来说,指定了3个文件
  • grep a.c try.c与grep 'a.c' try.c的区别
    • 设当前目录下有a1.c和a2.c
    • 前者实际执行grep a1.c a2.c try.c
      • 在a2.c和try.c中查找正则表达式a1.c
    • 后者在try.c文件中查找正则表达式a*.c

results matching ""

    No results matching ""