Unix程序设计环境课件:第3章 文件系统_第1页
Unix程序设计环境课件:第3章 文件系统_第2页
Unix程序设计环境课件:第3章 文件系统_第3页
Unix程序设计环境课件:第3章 文件系统_第4页
Unix程序设计环境课件:第3章 文件系统_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 文件系统3.1 文件系统基础3.2 文件内容3.3 目录结构3.4 权限3.5 i节点3.6 设备文件3.1 文件系统基础Unix文件文件类型3.1.1 Unix文件概述Unix文件Unix文件的特点Unix文件读写操作(1)概述文件是保存信息的基本结构。文件是保存在某种介质上的字节序列,可以包含任何可以表示为字节序列的信息。每个文件通过文件名进行标识,用户利用文件名对文件进行访问。操作系统负责定位文件所在的位置并维护文件的的相关属性。(2)Unix文件Unix文件是一组字节序列Unix没有给文件附加任何的结构,也没有对文件内容附加任何的特殊定义。对Unix而言,文件就是一组无结构的字

2、节序列。Unix文件系统是按照层次结构建立的Unix文件系统内部使用一个多级目录结构管理构件,控制着多级多层次的文件体系。从根目录开始向下延伸组成了层次结构的文件系统。Unix系统中每一个对象都可以表示为文件除了普通的数据文件外,为了便于管理和调度,Unix将系统中的每个硬件设备也表示为文件,并采用与一般文件相同的调度和管理方法来管理系统中的硬件设备,实现了对系统中所有对象统一调度和管理。以回车做为一个行结束。没有文件结束符。文件的结束是以判断是否还有字符可读(通过比较文件字符记数),做为文件是否结束的条件。(3)Unix文件的特点Unix系统对文件的所有I/O操作都通过read和write系

3、统调用完成的。$ cat123123456456789789d$(4)Unix文件I/O操作通过ls长格式列表显示文件类型通过file命令显示文件类型3.1.2 文件类型ls长格式列表:$ ls -l temprwrr you 20 Sep 27 06:11 temp$ 文件类型: rw r r 位置的字符表示文件类型(1)通过ls长格式列表显示文件类型 “-” ,表示该文件类型为普通文件,如文本文件,可执行文件等“d” ,表示该文件类型为目录文件“b” ,表示该文件类型为块设备文件“c” ,表示该文件类型为字符设备文件“l” ,表示该文件类型为链接文件“p” ,表示该文件类型为管道文件通过l

4、s长格式列表显示文件类型(2)通过file命令显示文件类型格式:file filename .功能:按文件内容来推测文件类型,如text,ascii,C,executable,core。$ file /bin /bin/cp /usr/src/linux/fs/pipe.c/bin: directory file/bin/cp: executable file/usr/src/linux/fs/pipe.c: C program text$3.2 文件内容与文件内容相关的控制字符用cat命令显示文件内容用od命令显示文件内容3.2.1与文件内容相关的控制字符控制字符: 在文件中不显示字符,只完

5、成控制功能的字符。十进制 八进制 名称 符号 7 007震铃 8 010退格符b 9 011制表符t10 012换行n 13 015回车符r与文件内容相关的控制字符3.2.2用cat命令显示文件内容用vi编辑文件$ vi junknow is the timefor all good people_$ ls -l junkrwrr you 36 Sep 27 06:11 junk$用cat命令显示文件内容$ cat junknow is the timefor all good people$3.2.3 用od命令显示文件内容$ od c junk 按字符格式输出0000000 n o w i

6、 s t h e t i m e n0000020 f o r a l l g o o d p e o0000040 p l e n$用od命令显示文件内容$ od cb junk 按字符的八进制格式输出0000000 n o w i s t h e t i m e n 156 157 167 040 151 163 040 164 150 145 040 164 151 155 145 0120000020 f o r a l l g o o d p e o 146 157 162 040 141 154 154 040 147 157 157 144 040 160 145 1570000

7、040 p l e n 160 154 145 0120000044$用od命令显示文件内容$ od cx junk 按字符的十六进制格式输出0000000 n o w i s t h e t i m e n 6E 6F 77 20 69 73 20 74 68 65 20 74 69 6D 65 0A0000020 f o r a l l g o o d p e o 66 6F 72 20 61 6C 6C 20 67 6F 6F 64 20 70 65 6F0000040 p l e n 70 6C 65 0A0000044$3.3 目录结构Unix目录树目录操作举例目录文件的内容计算目录

8、使用空间大小3.3.1 Unix目录树 根目录(树根节点) 目录(树枝节点) 文件(树叶节点)/binusretcdevhometmpadmbinincludelibuser1user2prog.cls.txtlibbin prog.c/文件系统的根/bin可执行形式的基本程序目录/dev设备文件目录/etc系统各种管理文件目录/etc/motd有关日期的登录消息/etc/passwd用户信息文件/lib基本程序库目录/tmp临时文件,当系统重启动时清除/unixUnix系统核心Unix系统目录/usr 用户文件系统目录/usr/adm系统管理目录/usr/bin扩展shell命令目录/usr

9、/dict词典(单词)和拼写检查支持/usr/games游戏程序/usr/include C语言的包含文件,如math.h/usr/include/sys系统包含文件,例如inode.h/usr/lib C、FORTRAN等的程序库Unix系统目录/usr/manUnix程序员手册/usr/man/man1Unix程序员手册第1章内容/usr/mdec硬件诊断程序、引导程序等/usr/news公众服务信息/usr/pub公共信息/usr/src工具和库源代码/usr/src/cmd /bin和/usr/bin中命令资源/usr/src/lib子例程库源代码Unix系统目录/usr/spool

10、通信程序的工作目录/usr/spool/lpd 行式打印机临时目录/usr/spool/mail 用户邮箱目录/usr/spool/uucp uucp程序的工作目录/usr/sys 操作系统内核资源/usr/tmp 后备临时目录/usr/home 用户目录/usr/home/you you的登录目录/usr/home/you/bin you的个人程序Unix系统目录3.3.2 目录操作举例unix bin dev etc usr lib tmpyou mike paul maryroothome举例/usr/home/youjunk$ pwd/usr/home/you$ lsjunk$举例/u

11、sr/home/youjunkrecipespiecookie$ mkdir recipes$ cd recipes$ pwd/usr/you/home/recipes$ mkdir pie$ mkdir cookie$ lspie cookie$举例$ cd pie$ pwd/usr/home/you/recipes/pie$ vi apple$ vi crust$ lsapple crust$junk/usr/home/yourecipespiecookieapplecrust举例$ cd .$ pwd/usr/home/you/recipes$ cd cookie$ pwd/usr/ho

12、me/you/recipes/cookie$ vi choc.chip$ lschoc.chip$junk/usr/home/yourecipespiecookieapplecrustchoc.chip通过ls命令显示目录项通过od命令显示目录文件内容3.3.3目录文件用ls命令列出当前目录项及相关属性: $ ls -lrwrr you 36 Sep 27 06:11 junk drwrr you 512 Sep 30 08:20 recipes $一个目录文件由多个目录项组成;每个目录项代表一个文件或目录;可以显示每个目录项的类型、权限、长度、时间、文件名等信息。 (1)通过ls命令显示目录

13、项用od命令列出当前目录文件内容:$ od c . 0000000 4 ; 0 0 0 0 0 0 0 0 0 0 0 0 0 0000020 273 ( 0 0 0 0 0 0 0 0 0 0 0 0 0000040 252 ; r e c i p e s 0 0 0 0 0 0 0 0000060 230 = j u n k 0 0 0 0 0 0 0 0 0 0 0000100 $ 一个目录文件由多个目录项组成;每个目录项代表一个文件或目录;每个目录项由两部分(16个字节)组成:(1)前两个字节为文件管理信息(i节点号)(2)后14个字节为文件名(不足14个字节补空格0)(2)通过od命

14、令显示目录文件内容目录文件的内容$ du 显示目录空间使用情况 6./recipes/pie 4./recipes/cookie 11./recipes 13.$单位为数据块数,例如每块1024或4096字节3.3.4 计算目录使用空间大小$ du a 显示目录空间详细使用情况 2./recipes/pie/apple 3./recipes/pie/crust 6./recipes/pie 4./recipes/cookie 4./recipes/cookie 11./recipes 1./junk 13.$计算目录使用空间大小用户注册信息文件用户类型文件存取权限改变文件存取权限3.4 权限

15、文件名:/etc/passwd $ grep you /etc/passwd you:*: 604: 604: 31060107: /usr/home/you: /bin/sh :用户ID :口令 :用户号 :组号 :注释 :注册目录(主目录) :shell程序名 3.4.1 用户注册信息文件四种用户:文件主: user, 用u表示同组用户:group ,用g表示其他用户:other , 用o表示所有用户:all , 用a表示3.4.2 用户类型用ls长格式文件列表显示权限:$ ls -l junkrwrr you 36 Sep 27 06:11 junk$缺省普通文件权限: rwrr3.4.

16、3 文件存取权限4种存取权限: 禁止r 读w 写x 行Unix文件存取权限4个用户类型:u 文件主g 同组用户o 其他用户a 所有用户通过“用户+权限”的模式定义文件存取权限。 rw r r 代表文件存取权限,由9个字符组成,分为三组,3个字符1组(依次为读r,写w,执行x):第1组:文件主u的权限第2组:同组用户g的权限第3组:其它用户o的权限文件存取权限 文件类型:- 普通文件d 目录文件b块设备文件c字符设备文件举例: - rwx r-x r- :-表示普通文件 :rwx表示文件主具有可读r、可写w、可执行x权限 :r-x表示同组用户具有可读r、不可写-、可执行x权限 :r-表示其它用户

17、具有可读r、不可写-、不可执行-权限文件存取权限3.4.4 改变文件存取权限两种方式:方式1: chmod 用户权限 文件名方式2: chmod 八进制权限 文件名方式1: chmod 用户权限 文件名4类用户:u 文件主g 同组用户o 其他用户a 所有用户4种权限: 禁止r 读w 写x 行$ ls -l junkrwr r l you 36 Sep 31 14:30 junk$ chmod o-r junk$ ls -l junkrwr l you 36 Sep 31 14:30 junk$ chmod u+x junk$ ls -l junk rwxr l you 36 Sep 31 14

18、:30 junk$举 例方式2: chmod 八进制权限 文件名八进制: nnn第1位: 文件主权限第2位: 同组用户权限第3位:其他用户权限例如:= rw-rw-rw- (110110110)= rwxrwxrwx (111111111)= rw-r- -r- - (110100100)= rwxr- -r- - (111100100)$ chmod 666junk$ ls -l junkrwrwrw l you 36Sep 31 14:30 junk$ chmod 755junk$ ls -lrwxrxrx you 36Sep 31 14:30 junk$举 例3.5 i节点文件名和i节点

19、文件属性和i节点结构通过系统调用访问i节点结构信息文件链接与 i节点号在目录文件中,每个文件为一个目录项,由16个字节组成:前2个字节为i节点号,文件属性保存在i节点数据结构中后14个字节为文件名3.5.1文件名和i节点号i节点号i节点结构的索引id(i节点号),保存在目录文件中,每个记录的前两个字节即i节点号。$ od c 0000000 4 ; 0 0 0 0 0 0 0 0 0 0 0 0 0 0000020 273 ( 0 0 0 0 0 0 0 0 0 0 0 0 0000040 252 ; r e c i p e s 0 0 0 0 0 0 0 0000060 230 = j u

20、n k 0 0 0 0 0 0 0 0 0 0 0000100$ i节点号举例:用ls命令列出 i节点号:$ ls -li Total 215768 rw-rw-rw- 1 you 36 sep 27 12:07 junk15274 drwxrwxrwx 4 you 64 sep 27 09:34 recipes$3.5.2 文件属性和i节点结构文件属性:文件名文件的索引号文件存取权限文件链接数文件主ID文件组ID最后修改时间文件大小文件存储位置 以上信息,除文件名外,所有这些信息都存放于i节点数据结构中。i节点结构struct stat /*structure returned by sta

21、t*/ dev_t st_dev; /*所在设备*/ ino_t st_ino; /*i节点号 */ ino_t st_ino ; /*读写模式 */ short st_nlink; /*文件链接数*/ short st_uid; /*文件主ID */ short st_gid; /*文件组ID*/ dev_t st_rdev; /*特殊文件*/ off_t st_size; /*文件大小 */ time_t st_atime; /*最后读取时间*/ time_t st_mtime; /*最后创建或写入时间 */ time_t st_ctime; /*最后修改时间 */; 3.5.3通过系统调

22、用访问i节点结构信息UNIX系统中,分为目录文件、i节点表两个数据结构文件名i节点号文件长度修改日期其他信息目录文件数据结构索引节点表优势: 由于文件管理中目录的检索是系统最频繁的处理工作,因此UNXI系统采用最简单和最简洁的目录文件格式无疑会大大提高对目录检索的速度。大大提高用户使用文件系统的效率。3.5.3通过系统调用访问i节点结构信息系统调用:stat功能:通过文件名返回该文件的i节点信息.struct stat stbuf; 定义数据缓冲区for (;) if (stat(name, &buf) = -1) 读i节点结构信息到缓冲区 buf.st_size=0; if (buf.st_

23、size lastsize) 读取文件大小信息 fprintf(stderr, “nYou have mail007n”); lastsize=buf.st_size; sleep(60); 3.5.4 文件链接与 i节点号 文件链接:若可以通过不同文件名访问到同一个文件,这些不同文件称为该文件的链接,文件数量称为文件链接数。$ ls -ltolal 2rwrr 1 you other 36 Sep 31 14:10 junkdrwxrwxrwx 4 you other 64 sep 27 09:34 recipes $类型与权限 链接数 文件主 文件组 大小 修改时间 文件名 文件链接与 i

24、节点号用ls -li命令显示文件,i节点号是区别于其他文件的唯一标识$ ls -li Total 215768 rw-rw-rw- 1 you 36 sep 27 12:07 junk15274 drwxrwxrwx 4 you 64 sep 27 09:34 recipes$若一个文件是其他文件的链接,则i节点号应该相同。(1)用ln命令建立文件链接$ ln junk linktojunk $ ls -liTotal 315768 rw-rw-rw- 2 you 36 sep 27 12:07 junk15768 rw-rw-rw- 2 you 36 sep 27 12:07 linktoj

25、unk15274 d rwxrwxrwx 4 you 64 sep 27 09:34 recipes$(2)删除具有文件链接的文件$ rm linktojunk $ ls -liTotal 2 rw-rw-rw- 1 you 36 sep 27 12:37 junk15274 d rwxrwxrwx 4 you 64 sep 27 09:34 recipes$删除具有文件链接的文件只有最后一个文件被删除,该文件才会真正被删除:$ rm junk $ ls -liTotal 115274d rwxrwxrwx 4 you 64 sep 27 09:34 recipes$(3)改变具有文件链接的文

26、件内容$ vi junk $ ls -liTotal 3 rw-rw-rw- 2 you 80 sep 27 12:37 junk rw-rw-rw- 2 you 80 sep 27 12:37 linktojunk15274 drwxrwxrwx 4 you 64 sep 27 09:34 recipes$若用编辑程序改变具有文件链接的文件内容,所以文件内容同时修改。3.6 设备文件设备文件设备文件类型终端设备安装和卸载文件系统3.6.1 设备文件Unix系统为了便于管理,将机器的硬件资源看作是文件,并且以文件的形式进行调度和管理。为了和普通文件进行区别,Unix系统把这些涉及到系统硬件资源

27、的内容定义为特殊文件。特殊文件所涉及到的机器硬件物理设备,包括硬盘,软盘,打印机,显示器等。用户对这些物理设备进行操作时,就类似与在对文件进行读写一样。3.6.2 设备文件类型设备文件分为两种类型: 字符特殊设备文件对应于以字符为单位操作的的设备。 块特殊设备文件对应于以字节块进行I/O操作的设备。设备文件列表$ ls l /devcrw- -w- -w- 1 root0, 0Sep2723:09consolecrw-r- -r- -1 root3, 1Sep2714:37kmemcrw-r- -r- -1 root3, 0May 61981membrw-rw-rw-1 root1, 64Au

28、g2417:4mtocrw-rw-rw-1 root3, 2Sep2802:03nul1crw-rw-rw-1 root4, 64Sep 915:42nul0brw-r- - - - - 1 root2, 0Sep 808:07rp00brw-r- - - - -1 root2, 1Sep2723:09rp01crw-r- - - - -1 root13, 0Apr121983rrp00crw-r- - - - -1 root13, 1Jul2815:18rrp01crw-rw-rw-1 root2, 0Jul 508:04ttycrw- -w- -w-1 you1, 0Sep2802:38tty0crw- -w- -w-1 root1, 1Sep2723:09tty1$ 用户登录时,必须使用一个终端设备,因而也就在/dev下有一个终端设备文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论