文件操作
出处:按学科分类—工业技术 企业管理出版社《工程师手册》第776页(7897字)
1.基本概念
(1)用户帐户 由于UNIX/XENIX系统是一个多用户系统,用户就必须在系统的统一管理下,在一定的范围内从事自己所要做的工作。因此,每个用户都要有自己的户头。用户帐户都用来组织和记录用户在系统中的活动。
(2)普通用户帐户 每个要求登录系统的用户都必须有一个普通用户帐户,包括:用户登录名,就是在系统中注册的名字;用户口令字,为了保密安全的需要,每个用户在登录系统时,系统提示输入口令字;组标识符,每个用户在系统中不仅以个体存在,而且都是某一组的一个成员。这种分组是非常重要的,它使得同一小组成员之间常常允许存取某些文件或目录,不同组之间一般则不能这样做。用户登录目录,这个目录是登录时所在的目录,在此目录里可存放自己的文件。用户登录shell,shell提示符是$,Cshell提示符是“%”。
(3)超级用户帐户 为了实现各种系统管理工作,系统管理员必须以超级用户身份登录。超级用户是以“root”名登录的用户。它在系统中具有最高的自主权,他可以读、写系统中的任意一个文件,也可以执行任何一个程序。
(4)注册(Logging in) 因为UNIX/XENIX系统是一个多用户系统,用户要向系统说明自己的身份。当用户进入UNIX/XENIX系统之前,必须由系统管理员给他建立一个“帐户”。用户一打开终端,屏幕上会显示“login:”提示信息。以后按以下步骤操作:
①输入注册名(由不多于8个字符的字母和数字序列构成)并按〈CR〉键。终端屏幕上显示“Password”.
②输入口令字,并按〈CR〉键。在输入password时为了保密在屏幕上并不显示输入的字符串,光标也不移动。如果输入错了注册名或口令,系统将显示如下信息:
Login incorrect:
Login:
如果显示这样的信息,请再次重新输入注册名和口令。
③用户是否需要回答终端的类型,这取决于系统的设置。如果显示:
TERM=(UNKNOWN)
则是要用户输入终端的类型。
一旦输入的信息全部正确,屏幕上会出现一个提示符。用shell时提示符为“$”,用C-shell时提示符为“%”。
(5)注销(logging out) 完成自己的工作之后,用户应该通过注销来通知系统。完成注销后系统释放用户所占用的终端供他人使用。也可再次注册。用shell时输入exit注销,用C-shell时输入Ctrl-d注销。
(6)通配符 在UNIX/XENIX提供了一种模式匹配功能,以此表示匹配特定的模式的一组文件名。
*匹配零个或多个任何类型的字符。
匹配括号[]内任何字符。
?匹配任意一个字符。
例:lp file[135]*
表示只想打印文件1、文件3、文件5的内容。
(7)改向以大于符“>”表示。
例:ls>file
意思是输出到“>”符号后的文件(而不直接在屏幕上显示)。
符号“>>”表示加到文件尾。
符号“<”表示从该符号后的文件(而不是从终端)输入。
(8)管道、管道线
①管道 就是把一个程序的标准输出与另一个程序的标准输入连接起来。管道不同于I/O改向。输出改向是把一个程序的输出写到一个文件中,而输入改向导致一个文件包含一个程序的输入,但是,管道却直接把一个程序的输出与另一个程序的输入相连接。
②管道线 就是一个命今的输出用为另一个命令的输入。这两条命令串接起来运行,就象流水线一样。用“|”表示。
管道线可使用逻辑“与”、“或”操作。
“与”操作用“‖”表示。
命令格式:命令1‖命令2
其功能是如果运行命令1不成功,则运行命令2。
“或”操作用“&&”表示。
命令格式:命令1&&命令2
其功能是如果运行命令1成功,则运行命令2、否则退出。
(9)系统分时 由于在一般计算机上只有一个执行程序的中央处理器(CPU).任一时刻,机器中只能有一个程序处于运行之中,当用UNIX/XENIX操作系统时,系统管理核心(kernel)可以在任一时刻同时申请运行多个程序。如由多用户共享机器,则每个用户的shell都是一个进程,各个shell处理的应用程序和命令也都是进程。多程序可能同时申请访问机器的单一CPU,系统的核心必须在任意的可能时刻给予其中某一程序授予访问权。某一进程运行一小段时间之后,控制权又交给其它进程。由于每秒种内至少发生一次这种进程切换,用户个人的印象却是自己独占全机,终端用户难以注意到其它程序和用户占用机器这一事实。
2.文件类型
UNIX/XENIX系统有三种不同的文件类型:
(1)普通文件 指的是在日常工作中常常接触的文件如程序文件和文本文件,它是以字节为单位的数据信息的集合。普通文件具有以下属性。
①有一个文件名(不唯一);
②有一个唯一的文件索引号,即Ⅰ结点号;
③文件以字节为单位表示大小;
④最后一次变更的时间;
⑤一组存取权;
⑥有所有者和属于某个组的组名。
例:
文件链接数就是该文件所链接的文件名的数量。假设这个数是2,表示有两个文件名和这个文件相链接。
存取权一共有三个级别:
①读权 当用户对某个文件具有读权,就可以用显示命令看该文件的内容。当用户只有读权时,他无权对这个文件进行编辑。
②写权 当用户对一个文件有写权时就可以对这个文件进行编辑。
③执行权 当用户对某个文件有执行权时,他就可以运行这个程序。
在存取权字段中一共有9个字符的位置,这是文件的主人,同组人和其他人各占3个文件存取权的位置。r:表示具有读权;w:表示具有写权;x:表示具有执行权。其顺序为:
rwx rwx rwx
文件主 同组人 其他人
UNIX/XENIX允许文件或目录的所有者控制文件或目录的访问权。这通过权限设置实现。为了确定与指定文件或目录有关的权限,可用1命令显示这个目录下所有文件的长列表。1命令输出结果的前10个字符指出权限。第一个字符指出文件的类型,必须是下列之一。
-表示普通文件。
b表示诸如硬盘或软盘的这样的块特别设备。
c表示诸如打印机或终端这样的字符特别设备。
d表示目录。
m表示一个共享。
n表示一个命名的特别文件。
p指出命名的管道。
s表示一个信号灯。
随后9个字符从左到右分为三组,分别指出:
①文件主存取权限;
②同组用户存取权限;
③所有其他用户存取权限。
在每一组里,三个字符分别代表可读、可写和可执行权限。对目录而言,“可执行”权限意味着可检索该目录下的所有文件和目录。
普通文件的存取权限含义如下:
r文件可读。
w文件可写。
x文件可执行。
-未赋予特别的权限。
目录的存取权限含义如下:
r可以列出该目录的文件,该目录还必须有“x”权限。
w可以列出该目录下建立和删除文件。与“r”一样,该目录本身还具有“x”权限。
x可以检索该目录,一个目录必须有“x”权限才能对目录实施有效操作。
文件和目录的权限组合有以下类型:
d----------所有人都不可存取。这种方式禁止除超级用户外的所有用户访问该目录。
drwx------属主可存取。所有者可列出该目录的内容的其中文件内容(如果它们在适当的权限下),用cd命令移到这个目录,并在该目录下建立和删除文件,这是目录属主的典型权限。
drwxr-x---除了允许所有者和同组用户的上述权限外,这个设置还允许同组用户列出该目录和其中文件的内容,并用cd命令移到这个目录下。但是同组用户不能在该目录下建立或删除文件。这是所有者给予需要访问该目录和其中文件的那些用户的典型权限。
drwxr-x--x除了允许所有者和同组用户的上述权限外,这种设置还允许除所有者及其组员外的其它用户用cd命令移到这个目录。但是,因为未授予其它用户“r”权限,所以其它用户不能使用任何ls命令列出该目录内容。
(2)目录文件
/整个文件系统根目录的绝对路径名。
/bin含有UNIX/XENIX常用命令的目录。
/usr该目录含有所有用户的主目录。它还包括一些其它目录,有:
/usr/bin含有不在/bin中的一些UNIX/XENIX常用命令。
/usr/include目录含有编译C语言程序所需的前导文件。
/usr/lib含有更多的库文件和数据文件。
/usr/spool含有用于存放需要打印、邮寄或通过网络传送的文件的各种目录。
/usr/tmp含有更多的临时文件。
/usr/adm含有与系统管理和记帐有关的数据文件。特别是/usr/adm/messages文件含有发送到系统监控台上的错误信息的记录。
/dev该目录含有与物理设备(如:终端、磁盘、打印机等)对应的文件。这个目录下的所有文件都是必要的而且不能被出除。有:
/dev/console系统主控终端路径名。
/dev/ttyXX用户终端名。
/dev/mem物理存储器。
/dev/null空设备(用于改向不想要的输出)。
/dev/rXX对应于设备名的无缓冲接口。
/dev/swap对换区。
/dev/tty你正在使用终端。
/lib该目录含有标准命令使用的库文件(包括C语言和其它语言程序的子程序。)这个目录是必需的。
/tmp该目录含有临时文件。
/etc含有各种各样的系统程序和数据文件。这些文件都是需要的,但多数可以修改。有:
/etc/mtab安装设备表。
/etc/mount安装文件结构。
/etc/mkfs构造文件结构。
/etc/init引导后的第一个进程。
/etc/passwd口令文件。
/etc/rc引导shell程序。
/etc/ttys终端设置。
/etc/termcap终端功能库。
/etc/motd注册信息。
/etc/default此目录下的数据文件包含系统命令所使用的缺省信息,可以修改,但不能删除。
/mnt是一个为接收安装可折卸的文件系统而设置的空目录。
/usr/joe/x这是一个全路径名。表示文件名为x,属于用户名为joe的全路径名。
/bin/x这是一个相对路径名。它表示文件名为x在当前目录的子目录bin里,若当前目录为/,则它表示的是/bin/x,若当前目录是/usr/joe,则它表示的是/usr/joe/bin/x。
filel在当前目录下的一个普通文件名。
·当前目录的缩写名。
··当前目录上一级目录的缩写名。
(3)特殊文件指的是和计算机系统相连的一系列硬件外部设备,如:硬盘、软盘、终端、打印机等。系统为了更好地管理和使用这些设备。把这些设备以特殊文件的形式放在“/dev”目录中和普通文件一样进行处理。
硬盘:hd(一号盘hd0a,1分区hd00,2分区hd01,…;2号盘hd1a,…)
软盘:fd(A盘fd0,B盘fd1)
终端:tty(tty00,tty01,tty02,…,)
主控台:console
打印机:1p(1p,1p0,1p1,……)
盘交换区:swap
盘根分区:root
盘用户分区:usr
存储器:mem
时钟:clock
特殊文件可分为以下两类。
①硬盘、软盘等,存储数据是以512字节的数据块为单位,叫:块设备。列表时,块设备的特殊文件行首有一个字母“b”。
②显示器、终端、打印机等,传送信息以字符为单位,叫:字符型设备。列表时行首有一个字母“c”。
块设备特殊文件
主符型设备特殊文件