《操作系统实验》指导书
2. block命令
命令格式:block <文件名>
命令功能:显示文件或目录占用的磁盘块号。若指定文件或目录不存在则报错。 实际操作系统不提供这样的命令,本系统是为了修改调试程序方便而增加了此命令。 使用举例: block ..
上述命令显示当前目录的父目录(即usr目录)占用的盘块号。 block /auto
显示根目录中文件auto占用的盘块号。 3. cd命令
命令格式:cd [<目录名>]
命令功能:改变或显示当前目录。若指定目录不存在则报错。 使用举例: cd
显示当前目录(它的全路径名)。 cd ..
选择当前目录的父目录作为当前目录。例如,若命令执行前的当前目录是user,则执行此命令后,当前目录变为usr。若当前目录是根目录,则执行上述命令时将报错(因为根目录没有父目录)。
cd /bin (绝对路径) 选择根目录中的bin子目录作为当前目录。 cd user/lin (相对路径)
选择当前目录的user子目录中的lin子目录作为当前目录。 4. check命令
命令形式:check
命令功能:检查FAT表等
实际操作系统无这类命令,该命令是为了方便调试、修改程序而设计的。该命令无参数。 5. close命令
命令格式:close <文件名> 命令功能:关闭指定文件。 使用举例: close mail
关闭当前目录中的文件mail,若当前目录中无此文件,或者虽然有此文件,但它并没有打开,则报错。应用举例: close ../box
关闭当前目录的父目录中的文件box。 close sun/beta.txt
关闭当前目录的sun子目录中的文件beta.txt。 6. copy命令
命令形式:copy <源文件名> [<目标文件名>]
命令功能:将源文件名所指文件复制出新文件,新文件名由“目标文件名”指定。 使用举例:
① 同一目录中的更名复制 copy mail email
将当前目录中的文件mail,复制出文件email,文件email也在当前目录中。
28
《操作系统实验》指导书
? 若执行命令时当前目录中不存在email(目录或文件),则该命令将文件mail,复制成当
前目录下的文件email;
? 若当前目录下存在email,但email是子目录名,则将当前目录中的文件mail,复制到当
前目录中的email子目录内,文件名为mail(同名复制);此时若email目录内已经存在文件或目录mail,则报错(重名错误);
? 若当前目录内存在email文件,则报错(重名错误);
? 若当前目录内不存在源文件mail(或者虽然有mail,但它是子目录名),则也报错。 ② 不同目录的同名复制 copy /mail user/lin
将根目录中的文件mail,复制到当前目录的user子目录的lin子目录中,文件名仍为mail。 ? 若user子目录中无lin子目录,则将mail复制到user子目录内,文件名为lin。 ? 若源文件或指定目录不存在,都将报错。
③ 同名复制到当前目录(此时,命令只需一个参数——源文件名) copy /usr/boy
将根目录的usr子目录中的文件boy,复制到当前目录中,文件名仍为boy。 ? 若文件boy不存在,报错。
? 若当前目录是/usr,也报错(同一目录不能同名复制)。 7. create命令
命令形式:create <文件名> [<属性符>]
命令功能:创建给定属性的新文件。刚创建的文件处于特殊的“打开”状态,即“建立”状态。处于这种状态的“只读”文件,也可以写文件。 使用举例:
create /usr/user/lin/box
在目录/usr/user/lin中创建文件box,该文件是“普通”属性的文件,即它的属性既不是“只读”、也不是“隐藏”、也不是“系统”。 create alpha rh
在当前目录中创建文件alpha,它是“只读”、“隐藏”属性的文件。 【注】新创建的文件也不允许发生重名冲突。 8. del命令
命令形式:del <文件名>
命令功能:删除指定文件。删除文件时,将该文件的目录项中“文件名”的首字符改为ASCII码为0xe5的字符,同时回收该文件的磁盘空间(FAT表对应值清零)。若系统具备删除恢复功能,则需将被删除文件的有关信息记录到“删除文件恢复信息表”中。 使用举例:
del user/lin/box
删除当前目录的user/lin子目录中的文件box。 9. dir命令
命令形式:dir <目录名> [<属性>]
命令功能:显示“目录名”指定的目录中的文件名和第一级子目录名。若指定目录不存在,则给出错误信息。如果命令中没有指定目录名,则显示当前目录下的相应内容。若命令中无“属性”参数,则显示指定目录中“非隐藏”属性的全部文件名和第一级子目录名;若命令中有“属性”参数,则仅显示指定属性的文件名和目录名。属性参数的形式是“|属性符号”,其中属性符号有r、h和s三种(不区分大小写),分别表示“只读”、“隐藏”和“系统”三种属性,它们可以组合使用且次序不限。例如“|rh”,表示要求显示同时具有“只读”和“隐藏”属性的文件和目录名。显示文件名时,同时显示该文件长度;显示目录名时,同
29
《操作系统实验》指导书
时显示“
dir /usr |h 显示根目录下usr子目录中全部“隐藏”属性的文件名和子目录名 dir .. 显示当前目录的父目录中全部“非隐藏”属性的文件和子目录名(包括“只
读”属性的文件和目录名也显示)。
10. exit命令
命令形式:exit
命令功能:退出本程序。退出时询问用户是否要保存数据。 11. fseek命令
命令形式:fseek <文件名>
命令功能:将读、写指针移到指定位置n处。 使用举例:
fseek boy 20
对当前目录中的文件boy进行操作:将其读、写指针移到文件开头的第20个字符处。文件boy必须存在且已经打开,否则报错。
高级语言中有这样功能的函数,但实际操作系统中不提供fseek和rewind这样的命令,本系统是为了方便读、写文件操作而提供这类命令的。 12. help命令
命令形式:help
命令功能:简单列出本系统各操作命令的格式和功能。 13. md命令
命令形式:md <目录名> 命令功能:创建指定目录。 使用举例:
md /usr/user/chen
在根目录的usr子目录的user子目录内,创建新目录chen。 14. open命令
命令形式:open <文件名>
命令功能:打开指定文件。在用户打开文件表(UOF)中登记该文件的有关信息。 ? 若指定文件不存在,报错;
? 若指定文件已经打开,则显示“文件原先已经打开”字样。 15. rd命令
命令形式:rd <目录名>
命令功能:删除指定的目录。规定只能删除空目录。
本模拟系统规定,rd命令只能删除空子目录(即只含有一个目录项“..”的目录)。对非空子目录执行rd命令时,必须先用del命令删除其中的所有文件、用rd命令删除其中所有子目录后,方能删除该目录。这种方式与DOS的处理方式相同,而与Windows的处理方式不同。这种处理方式的优点是安全,缺点是删除工作烦琐。 16. read命令
命令形式:read <文件名> [<位置m> [<字节数n>]
命令功能:从已打开的文件读文件内容并显示。若无“位置”参数,则从读指针所指位置开始读。若有\位置\参数,则从指定位置处开始读。位置m是指从文件开头第m个字节处读(m从1开始编号)。若无\字节数\参数,则从指定位置读到文件末尾;若有\字节数n\参数,则从指定位置开始读n个字节。每读一个字节,读指针后移一个字节。若文件未打开或文件不存在,分别给出错误信息。
30
《操作系统实验》指导书
使用举例: read boy
上述命令读当前目录中的文件boy,从读指针所指位置开始,一直读到文件尾部。 read boy 20
上述命令读当前目录中的文件boy,从文件的第20个字节开始读,一直读到文件尾部。 read boy 20 30
上述命令读当前目录中的文件boy,从文件的第20个字节开始,共读30个字节。 17. ren命令
命令形式:ren <旧文件名> <新文件名> 命令功能:文件改名。 使用举例:
ren /usr/boy peter
上述命令将根目录下usr子目录中的文件boy,改名为peter。 ? 若boy不存在,报错。
? 若名字为peter的文件已经存在,报错。
注意!此命令新文件名前不能有目录名,否则出错。 18. rewind命令
命令形式:rewind <文件名>
命令功能:将指定文件的读、写指针移到文件开头(第一个字节处)。 ? 若该文件不存,报错。
? 若文件虽存在但没有打开,也报错。 19. type命令
命令形式:type <文件名>
命令功能:显示指定文件的内容。 使用举例:
type /usr/boy 20. undel命令
命令形式:undel <目录名>
命令功能:恢复指定目录中被删除的文件。 使用举例:
设当前目录是根目录,键入undel,操作过程及屏幕显示如下: C:/>undel
文件abc可能可以恢复,是否恢复它?(y/n) y 文件abc可能可以恢复,是否恢复它?(y/n) y
该目录中已经存在名为abc的文件,请为被恢复文件输入一个新的名字:boy 输入的文件名发生重名冲突。 请重新输入文件名:abc1
共恢复了 2 个被删除的文件。
因根目录中先后删除的2个文件名都是abc,故恢复时有2个abc文件,发生重名冲突,请求用户输入一个新名字,开始时用户输入boy,因根目录中正好也有文件boy,故还是发生重名冲突,直到输入abc1,才完成第2个文件的恢复工作。 当要恢复的文件原先占用的磁盘空间已作它用时,该文件就不能恢复。本例没有发生这种情况。 21. uof命令
命令形式:uof
31
《操作系统实验》指导书
命令功能:显示用户已打开文件表的内容。
实际操作系统并不提供这类命令,本系统是为了方便程序调试而提供了此命令。 22. write命令
命令形式:write <文件名> [<位置>] [insert]
命令功能:命令中若无“位置”参数,则在写指针所指位置写入文件内容;若提供“位置”参数,则在对应位置写入内容。位置可以是整数n,是指在文件的第n个字节处开始写入(位置从1开始编号)。“位置” 还可以是“append”(前3个字符有效,不区分大小写),表示在文件尾部写入信息;若有参数“insert”(前3个字符有效,不区分大小写),则新写入的内容插入到对应位置,对应位置开始的原内容后移。若无参数“insert” ,写入的内容代替文件原先的内容(对应位置的内容)。写入完毕调整文件长度和写指针值(写指针指向写入内容最后一个字节的下一个字节处)。若文件未打开或文件不存在,分别给出错误信息。 可以有如下几种命令形式:
write <文件名> ——在写指针当前所指位置写,写入内容代替原内容(改写方式)。 write <文件名>
write <文件名> insert——在写指针所指位置写,写入处开始的原内容后移(插入方式)。 write <文件名>
write <文件名> append——在文件尾部写(添加方式),这种情况参数“ins”不起作用。 使用举例: write boy
对当前目录的文件boy执行写操作,从文件boy的写指针当前所指位置开始写,写入内容代替原内容(改写方式)。
? 若文件boy不存在,报错。
? 若文件boy存在,但没有打开,也报错。
? 若文件boy存在,且已经打开,但该文件是只读文件,也报错。 write user/beta 20
对当前目录的user子目录的文件beta执行写操作,在文件开头第20个字节处开始写,写入内容代替原内容(改写方式)。 write boy ins
对当前目录的文件boy执行写操作,从文件boy的写指针当前所指位置开始写,写入处开始的原内容后移(插入方式)。 write boy 20 ins
对当前目录的文件boy执行写操作,在文件开头第20个字节处开始写,写入处开始的原内容后移(插入方式)。 write boy app
对当前目录的文件boy执行写操作,写入的内容接到文件boy的尾部(添加方式)。
32
《操作系统实验》指导书
六、学生应提交的实验材料
完成实验时,每个学生至少应提交如下三种材料:
6.1 《实验报告》
实验报告要求:
(1) 用钢笔或签字笔填写,不能用圆珠笔和铅笔填写。可以用打印稿。 (2) 应说明自己完成实习任务的情况,包括: ? 新设计了哪些命令处理函数; ? 修改了哪几部分程序;
? 哪些是自己独立完成的,哪些是与人合作完成的。
(3) 对新增命令和重新设计的命令的程序,应提供较详细的程序流程图。注意!实验报告
中不要画本《实验指导书》已经给出的流程图。
(4) 应包含测试、运行程序的主要结果。所提供的测试结果,应能体现学生新增命令程序和
修改量比较大的程序的功能,能体现学生测试程序的能力(测试用例应尽可能测试到各被测试命令的相关功能)。
(5) 可以包含新增命令的设计思想或操作使用说明。
6.2 源程序清单及其可执行文件
(1) 源程序清单中修改和新增部分要求有尽可能详细的注释。 (2) 可执行文件(.exe文件)应该能在Windows环境中独立执行。
6.3 程序测试、运行的结果
应该把程序修改、调试好后的最终运行结果,即屏幕显示内容,用文本文件(.txt)或Word文档形式保存下来提交给批阅老师,以便了解修改、新增功能的实现情况。
【注】可将运行的屏幕显示内容复制到“剪贴板”中,粘贴到“记事本”或Word窗口中,然后保存到磁盘文件中。屏幕显示内容复制到“剪贴板”的方法是:鼠标右键单击运行窗口的“标题栏”,在弹出菜单中选“编辑/全选”,按“回车”键即可。
第一项(实验报告)以纸质文件方式交任课老师,后两项以电子文档形式打包上传到10.3.8.26服务器中“通信08操作系统”文件夹中。
为避免文件重名,同时为了清楚明了,要求每个学生用自己的学号给文件命名。例如,某学生的学号为“通信080104”,则其源程序文件名为“通信080104.cpp”,可执行文件名为通信
080104.exe\,程序测试、运行结果的文件名为“通信080104.txt”或“通信080104.doc”,上述文件可以压缩成一个文件,文件名为“通信080104.rar”或“通信080104.zip”等。
南京工业大学信息学院计算机科学与技术系编
33