Unix操作系统基础:Unix文件系统之文件篇
1. 文件系统的存储结构
Unix系统可以把一个能随机存取的存储介质(如硬盘、软盘和光盘等,和小型机或大型机的磁带机顺序存取相对应)上的存储空间划分成一个至多个区域,每个区域都可以像独立的物理设备一样单独进行管理和数据存取,这样的存储区域,即是逻辑设备。在逻辑设备上按照一定的格式进行划分,就构成了逻辑文件系统,简称文件系统。对逻辑区域的访问就是对实实在在的存储介质的不同区域进行访问。
逻辑文件系统的存储结构
引导块 | 系统加电启动时,引导程序读入和装载操作系统的模块。一个系统只有一个引导块,需要引导的才需要引导块。它不是文件系统的必要组成部分。 |
超级块 | 存放文件系统的标题信息,包括文件系统大小、i节点表大小、数据区的使用状况等。比较重要的一个块。 |
i节点表 | 其中的每一个表项存放一个文件的静态信息:大小、类型、属主、索引表、访问权限和修改日期等。(命令:#ls -i 查看文件唯一i节点号) 由i节点号可以查到i节点表。通过i节点表可以找到数据的存储区。 |
数据存储区 | 实际存放数据的地方:以块为单位存取 |
2. 文件系统的建立
#mkfs specialfile blocksize gap blocks
specialfile: 要建立文件系统的逻辑设备名。
blocksize: 文件系统块的大小,通常为512字节及其整数倍。
gap: 间隔因子,用于提高读写速度。
大:间隔时间长;小:读的时间短,文件碎片就会很多。
(间隔因子:读完第一个扇区以后要经过多久才能读第二个扇区的内容)
blocks: 文件系统的大小(块数)。
3. 文件系统的安装和拆卸
建立好的文件系统在使用时,应该接到一个目录下,这个目录通常为根目录下的一个空目录,用户访问该目录时也就访问到了挂接在目录下的文件系统的内容。这个挂接操作就叫安装。
一个文件系统不用时,可使其从安装目录上拆卸下来,该安装目录断开与该文件系统的任何联系,由此保护该文件系统不受任何非法访问。
#mount specialfile directoryname
#umount specialfile(or deiretoryname)
如:
mount /dev/hd03 /mnt
umout /dev/hd03(umount /mnt)
4. 文件系统的逻辑结构
root 根目录
bin 经常使用的比较简单的命令:who,cat,cp,ls命令等
boot 引导文件
unix
usr
bin
lib
include
spool:cron,mail,lpd等
mnt 挂接的文件
etc 系统配置文件:passwd,ttys,rc,mount等
tmp 临时性文件
dev 设备文件:mem,fd0,cdrom,hd01,tty01等
在Unix系统中,所有静态的对象都是属于“文件”的范畴,其主要目的是规范和简化应用程序的接口。不管是一个设备还是一个目录,实际上都是看成文件。
与“文件”相对应的就是“进程”,文件和进程是Unix系统中最基本的两个概念。文件是静态的,进程是活动的,一个文件在执行,就是一个进程的状态。
5. 目录文件的内容
目录是一种特殊的文件,它仅包含要访问的存在于其中的文件或目录所必需的信息。
目录一般比其他文件占用的空间小,目录当中只包含目录在访问中所必要的信息。
目录存在的作用在于将相关的文件组织在一起。类似书柜和书柜中抽屉的作用,将文件存 放在不同的抽屉中,以缩短查找时间,所以文件的查找是有序的。
每个目录项,包括一个文件名,一个相关的inode(i节点)序数。通过i节点数去查找 i 节点表,从而找到目录或文件在磁盘上的位置。从而对目录或文件进行访问。
(没有说目录的大小就是目录下包含的文件的大小累计起来。)
i节点表中如果一个i节点号是0,表示文件已被删除。是1表示是坏块。i节点号为2表 示是文件节点的根文件,如果值是两个点,表示其上级是根。
3号和4号表示的是临时性的文件,5后以后就是普通的文件。
实际上,我们平时的删除、移动等都是对这个目录项进行操作。
6. 索引节点(inode,i节点)
索引节点就是磁盘i节点表中的一个表项,存放文件的静态信息。
各文件之间是以其i节点号相互区别的。
用户访问文件的过程:
指定文件名
-〉找到相关的inode序数(命令:ls -i)
-〉访问inode表(很多inode数组成了一张i节点表)
-〉找到文件的位置
-〉访问文件中包含的数据
inode表中包含了指定文件的各种相关信息。
7. 与文件相关的命令
1. 文件名及其规范
文件名的长度:
ü 在短文件名的系统中,文件名最长为14个字符。
ü 在长文件名的系统中,文件名长度可达512个字符。
ü 在Unix当中可用255个字符。
文件名的可用字符:A-Z大小写字母、下划线、小数点和0-9数字。
除此之外,所有的其它字符(包括空格)不能用于文件名,以点为前缀的文件名是隐含文 件名,在列目录操作时通常是不显示出来的。如果要显示出来需要用ls -a命令。
Unix系统对文件名的含义不作任何解释,文件名(包括其后缀)的含义由使用者或调用程 序来解释。
注意:在Unix系统中字母的大小写是有严格区别的。
AIX/Linux的文件名:
Ø 文件名命令规则:只使用字母、数字及三个特殊符号(#,@和_),也可以用点。
Ø 文件名中不能包括空格。
Ø 文件名中不包括shell使用的特殊字符,如></;等&![]|‘’“”()等。
Ø 不能用+号或-号作为文件名的第一个字符。
Ø 不能与系统中的命令名相同。
Ø 严格的大小写区分。
Ø 文件名中最多包括255个字符。
Ø UNIX中没有文件扩展名。
Ø 点只是作为文件名的一部分,不作为区分文件类型。
Ø 使用ls命令是看不到以点作为文件前缀的文件的。
2. 命令
1) touch命令
作用:修改文件的访问和更改时间。并可以创建0字节长度的文件
格式:$touch 命令参数
目的:
ü 如果命令参数中指定的文件并不存在,这个文件将被创建
ü 如果命令参数中指定的文件已存在,那么这个文件的最后一次更改时间将被更新为当前时间。
2) cp命令
作用:复制文件,对文件备份。
格式:$cp source target
选项:
-i :如果目标文件存在,请确认是否覆盖;
-f :复制目录到新的目录
如果目标(target)参数中指定的是一个目录名,那么新的文件可与源文件同名。但是, 如果那个目录下恰好也有与这个文件同名的文件,也会提示是否覆盖。
支持单个文件和多个文件的拷贝,也支持不同目录之间的拷贝。
cp创建新文件。新文件和源文件不属于同一个文件。修改任一个不影响另一个。
3) mv命令
作用:将一个文件从一个地方移动到另一个地方,也可以作为文件或目录名称的修改。
格式:$move sourse target
说明:源参数可以是一个文件也可以是多个文件,如果是多个文件。
目标文件可以是一个文件,也可以是一个目录。
如果是多个文件,目标target必须是一个目录。
使用mv,文件数量不会发生变化,只是改变文件名或文件所处的位置。
mv更改文件名或把文件移动到别处。源文件已不存在。
4) ln命令
作用:给一个已经存在的文件再取一个名字。新的文件名与原文件名可以在同一个目录
下,也可以在不同的目录下。新老文件名代表同一个文件。不同于快捷方式。
格式:$ln file1 file2
说明:链接前,文件已有不止一个名字;链接后,文件内容并没有被复制。
对文件的任何一个名字操作都具有完全相同的效果。
链接后,该文件的属主及文件的权限设定都没有变化。
删除一个文件名时,只要剩下文件名个数不为零,文件继续存在。
注意:
Ø n与cp是不同的,ln只为文件建立另一个文件名,没有新的文件产生,
而cp是把文件的物理位置进行复制,有两个分别的文件。
Ø ln可以指定一个已经存在的目录名作为新文件名,这样,用户可以不输入路
径就可以在指定目录中访问该文件。
Ø ln的使用会使链接数增加。
ln为已经存在的文件建立别名。实际上指向同一个文件。
5) cat、more、pg显示命令
Ø cat(concatenate,连结)
作用:用来显示、创建或者合并文件
格式:$cat filename1 filename2
说明:如果输出的内容超过一屏,那么系统自动滚动到最后一屏,你只能看到最后一 屏的内容。滚动过程中可以使用Ctrl+s暂停,Ctrl+q恢复。
用cat命令显示只能显示由可打印的ASCII字符组成的纯文本文件。
如果被显示的文件中包含不可显示的控制字符,则可能造成屏幕显示乱码,
甚至终端被锁住。
Ø more
作用:基本功能与cat命令相同,都是打开文件并将其显示在屏幕上,但more并非
一次性显示文件的所有内容,而是逐屏显示文件的内容。翻屏时用<space>键。
格式:$more filename
说明:如果文件长度大于屏幕允许最大的允许行数,则在屏幕底部显示"more"和
已显示字符的百分比。
Ø pg
作用:也是分屏显示文件的内容。只是显示下一屏的内容时要按<enter>键。
格式:$pg filename
说明:linux下没有pg命令。
6) rm命令
作用:删除不需要的一个或多个文件
格式:$rm file1 file2
选项:
-i:删除文件前给出确认。
-r:删除指定的目录及目录下所有的文件和子目录。即删除整个目录结构。
注意:
用rm命令删除后无法恢复。
指定文件名,删除工作目录里的文件,指定路径名,删除位于其他目录的文件。
rm直接删除,没有提示和确认。但在linux上有确认提示。
7) lp命令
作用:打印命令
格式:lp [-options] file1 [file2 ...]
选项:
-d: 在指定打印机上打印,如:$lp -d lp2 f1
-m:打印完成后,向用户发通知邮件
-n: 打印指定份数,如:$lp -n2 f2
-s: 取消屏幕提示信息
-t: 在文档封面上打印指定的标题
-w:打印完成后在用户终端上显示提示信息
说明:lp命令发出后,并不等待打印机完成,而是立即出现shell提示符
等待新的键盘命令。这体现了Unix多用户多任务的特点。
其他打印命令:
如:lpstat 显示打印系统中打印请求和打印机状态等。
$lpstat
cancel 撤销还未执行的或还未完成的打印请求。
$cancel printer3 撤销指定打印机的所有请求
8) cut命令
作用: 用于“切取”文件中的列或字段,它将文本文件中每一行的一部分显示输出。
cut命令必须指定功能选项。
格式: $cat -d " " -f 1,2 -c 26-30 filename
选项:
-f:指定字段的位置
-c:指定列的位置
-d:指定字段分隔符,缺少的字段分隔符是制表符tab
9) paste命令
作用:把文件一行接一行地连接在一起,或把两个或多个文件的域连到一个新文件里。
格式:$paste 选项 参数
选项:
-d:指定分隔符,默认制表符tab。