[工学]清华大学UNIX讲义第4章.ppt

  1. 1、本文档共214页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]清华大学UNIX讲义第4章

第4章 UNIX的文件和目录 4.1 文件和目录的层次结构 4.2 文件和目录的命名 4.3 shell的文件名通配符 4.4 文件管理 4.5 目录管理 4.6 文件的归档与压缩处理 4.7 文件系统的存储结构 4.8 硬连接与符号连接 4.9 系统调用 4.10 文件和目录的访问 4.11 获取文件的状态信息 4.12 设备文件 4.13 文件和目录的权限 4.1 文件和目录的层次结构 UNIX系统通过目录管理文件,文件系统组织成树状结构,目录中可以含有多个文件,也可以含有子目录。UNIX系统中,路径名分割符用正斜线/。表4-1所示为一些常见的目录和文件。与系统有关的一些主要目录的取名和在层次结构中的位置,几乎在所有UNIX系统中都相同。 表4-1 UNIX常见的目录和文件 4.2 文件和目录的命名 (1)名字长度。现在的UNIX都支持长文件名,文件名长度的最大值都在200以上,早期的UNIX至少可以支持长度为14个字符的文件名。 (2)取名的合法字符。除斜线外的所有字符都是命名的合法字符,空格、星号甚至不可打印字符也可以做文件名。一个字节的取值0~255之中,47是斜线的ASCII码,不可作为文件名,ASCII码0用作C语言的字符串结束标志,其余的254种取值都可以作为文件名。 (3)大小写字母有区别。例如:makefile,Makefile,MAKEFILE是三个不同的文件名。 4.3 shell的文件名通配符 4.3.1 规则 UNIX的文件名通配符是由shell程序解释的,不同的shell会有不同的文件名通配符规则。对几乎所有的shell来说,表4-2列出的有关文件名通配符的规则几乎都一致。 表4-2 常用的shell文件名通配符 4.3.2 与DOS文件名通配符的区别 (1)UNIX的文件名通配符要比DOS中的严格,无二义性。设当前目录下有两文件xcom.exe和xcom.obj,DOS中DIR XCOM*命令会列出两个文件,而DEL XCOM*删不掉任一个文件。DOS也不允许使用类似的通配串*temp*。在UNIX中,文件名通配符允许用于任何命令,而DOS中只能用于dir/del/copy等有限的几个命令中。在UNIX中,命令cat *.c可以列出所有的.c文件内容,而在DOS中,命令TYPE *.c不可以。现在的Windows系统中,这种情况有所改观。 (2)关于文件扩展名。DOS中*.*匹配所有文件,UNIX中*.*要求文件名中必须含有句点,否则不匹配。UNIX中并没有把文件名中的句点做特殊的处理,它和普通的字符有着相同的地位。UNIX文件名处理中,没有所谓“扩展名”的概念。 (3)匹配子目录中的文件。在UNIX中可以使用*/*.[ch]通配符,匹配当前目录下所有一级子目录中文件名后缀为.c和.h的文件,这在DOS中不允许。 4.3.3 文件名通配符的处理过程 UNIX和DOS的文件名通配符看起来类似,但是,在处理过程上有所不同。了解shell的工作机理,会更深入更准确地把握shell的特性,便于正确地使用它,也能够理解shell的某些行为。UNIX处理文件名通配符的过程分三步。 (1)在shell提示符下,从键盘输入命令,输入的命令被shell所接受。 (2)shell对所键入的内容作若干种加工处理,其中含有对文件名通配符的扩展工作,生成结果命令。 (3)执行生成的结果命令。 shell程序也是在操作系统内核支持下的应用级程序,与普通用户编写的C语言源程序编译链接之后产生的可执行程序在系统中有相同的地位。甚至,用户也可以根据自己的喜好编写自己的shell程序。从设计shell软件的程序员角度看,在shell提示符下输入命令,会在程序中得到一个字符串的输入,这是第一步;将得到的这个字符串进行加工处理,其中,含有对文件名通配符的展开工作,生成结果命令,这是第二步;第三步,调用操作系统的系统调用,创建新的进程执行命令,并把参数传递给新进程。 shell在第二步中,含有文件名生成工作,把用空格分开的每一段作为一个“单词”,扫描每个词,从中寻找 * ? []。如果其中之一出现,则该词被识别为一个文件名通配符,用与文件名通配符相匹配的文件名表取代该词。可以匹配多个名字时,按字母序排列多个名字。如果没有找到与文件名通配符相匹配的文件名,在B-shell中不改变该词,在C-shell中产生错误。 【例4-1】 体验shell对文件名通配符的展开处理。 (1)设当前目录下只有try.c,zap.c,arc.c三文件,在shell提示符下,键入命令: cat *.c 那么,shell根据当前目录下的所有文件的文件名集合,将*.c扩展为arc.c try.

文档评论(0)

jiupshaieuk12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档