操作系统实验 实验报告-1

1. 实验目的

通过本实验,要求学生熟练掌握 Linux 各种文件操作命令,包括:

  • 使用控制字符执行特殊功能,使用 filestrings 命令确定文件类型
  • 使用 catmore 命令显示文本文件的内容
  • 使用 headtail 命令显示文本文件的部分内容
  • 使用 wc 命令确定单词、行和字符数
  • 使用 diff 命令比较2个文件
  • 回顾文件和目录命名约定
  • 使用 touch 命令创建新文件
  • 使用 mkdir 命令创建新目录
  • 使用 rm 命令删除文件
  • 使用 rm -r 命令删除目录

2. 实验内容

2.1 文件信息命令

  1. 开机:

登录进入 GNOME(或你所用 Linux 版本提供的图形用户接口)。在 GNOME 登录框中填写指导老师分配的用户名和口令并登录。

  1. 访问命令行:

单击红帽子,在“GNOME 帮助”菜单中单击“系统工具”-“终端”命令,打开终端窗口。(不同的 Linux 版本所提供的终端访问的位置可能不同)

  1. 使用控制字符执行特殊功能:

控制字符用来执行特殊的作业,如中止和启动屏幕输出。大多数 PC 键盘有两个控制键。它们通常标记为 Ctrl,可以在键盘的左右下角找到。为了输入一个控制字符序列,可按住 Ctrl 键不放,然后按下键盘上相应的字符。

  • Ctrl + C:中断当前活动。当你在 csh 中键入一个不可识别的命令行(例如:$ls “),收到第 2 个提示符的时候,Ctrl + C 也可以用于恢复 Shell 提示符。
  • Ctrl + Z:终止当前活动。显示 ls 命令的手册页面(man ls),然后使用 Ctrl + Z 中止输出。

当你按下 Ctrl + Z 的时候,发生了什么事情?

退出当前窗口,回到命令行。

  • Ctrl + D:表示文件的末尾或者退出。Ctrl + D 用于退出一些 Linux 工具程序(bc、write 等),退出一个终端窗口,注销一个终端会话或者命令行登录会话。作为一个一般的规则,当您出现“死机”时,或者如果 Ctrl + C 不起作用,可试试 Ctrl + D。例如:

    1. 在 Shell 提示符下键入 bc,启动基本的计算器工具程序。
    2. 把两个数字相乘(键入:458 * 594,然后按回车键)。
    3. Ctrl + D 退出计算器。

当使用计算器的时候,你的提示符是什么?

$:指用户当前身份为普通用户

  • Ctrl + U:擦除整个命令行。Ctrl + U 最常用在:

    • 一个擦除决定不执行的命令行的快捷方式。
    • 如果登录到一个远程系统,退格键不起作用。
    • 它可以确保在登录的时候,从一个“空”的用户帐号和口令输入开始。
    • 因为在口令输入的时候看不见它们,当知道自己键入了错误字符的时候,使用 Ctrl + U 擦除密码,重新开始输入。

如果输入一个命令,如 ls -R /,有时候,会在按下回车键之前想擦除命令行。输入一个命令,在按下回车键执行命令之前按下 Ctrl + U。结果是什么?

整行命令被删除。

  1. 使用 file 命令确定文件类型:

在 Linux 系统中可以找到许多类型的文件。文件类型可以通过使用 file 命令来确定。当一个用户试图打开或阅读一个文件的时候,这个信息很重要。确定文件类型可以帮助一个用户决定使用哪个程序或命令来打开这个文件。这个命令的输出最常见的是如下几种:文本文件、可执行文件或数据文件。

  • 文本文件:包括 ASCII 或英语文本、命令文本和可执行的 Shell 脚本。这种类型的文件可以使用 catmore 命令读取,可以使用 vi 或其他文本编辑器编辑。

单击红帽子,在“GNOME帮助”菜单中单击“辅助设施”-“Text Editor”命令,在文本编辑中键入适当内容并保存为 test 文件。使用 file 命令来确定 test 文件的文件类型。它是哪种类型的文件?

ASCII text

  • 可执行(或二进制)文件:包括 32 位的可执行文件和可扩展链接格式(ELF)编码文件,和其他动态链接的可执行文件。这种文件类型表示这个文件是一个命令或程序。

单击红帽子,在“GNOME帮助”菜单中单击“办公”-“OpenOffice.org Writer”命令,建立一个文档如 ww.sxw。使用 file 命令确定你所建立的文件类型。它是哪种类型的文件?(注意文件名部分必须包括扩展名,如 file ww.sxw)

可执行文件

  1. 使用 strings 命令:

strings 命令可以用于打印可执行文件或者二进制文件中的可读字符。一些有编程背景的人,可以解释 strings 产生的输出。这个命令在这里只是作为一个展示可执行文件中可打印字符的方法来介绍。strings 命令必须用于读取可执行文件,如 /usr/bin/cat。在大多数情况下,strings 命令也可以给出命令的使用语法。

使用 strings 命令查看 /usr/bin/cal 文件的可读字符。列出 strings 命令中的一些输出。

使用截图

  1. 使用 cat 命令显示文件的内容:

cat 命令在屏幕上显示一个文本文件的内容。它常用于显示如脚本文件(类似批处理文件)这样的短文本文件。如果文件超过一屏的话,必须使用一个屏幕可以滚动的窗口,如 GNOME 环境中的终端窗口。

键入 ls /dev > dev1,使用 cat 命令显示主目录中 dev1 文件的内容。文本的显示出现了什么情况?

出现很多行输出,无法全部显示。

  1. 使用 more 命令显示文件的内容:

more 命令是一个用于显示文本文件首选的方法,因为它会自动的一次显示一屏文件内容。如果文件的信息比一屏更长,屏幕的底部显示如下的信息:--More--(n%)(文件的 n% 已经显示)。按下回车键,继续一次显示一行信息。空格键将继续一次显示一屏内容。

使用 more 命令显示主目录中 dev1 文件的内容。文本的显示出现了什么情况?

显示出了第一页文本。点击回车自动跳转下一行,点击空格自动跳转至下一页。

  1. 使用 head 命令显示文件的一部分:

head 命令用于显示一个或多个文本文件的前 n 行。在默认情况下,如果没有给出 -n 选项,将显示前 10 行。当您只想查看文件的开始的几行,而不管文件的大小的时候,head 命令是很有用的。

  • 单独使用 head 命令,显示主目录中 dev1 文件的开始部分。显示了多少行?

10行。

使用带 -n 选项的 head 命令,显示主目录中 dante 文件的前 20 行。您输入什么命令?

head -n 20 dante

  1. 使用 tail 命令显示文件的一部分:

使用 tail 命令,显示文件的最后几行。在默认情况下,如果没有指定 -n 选项,将显示最后 10 行。当检查大型日志文件最近输入内容的时候,tail 命令是很有用的。备份工具程序常把备份哪个文件和什么时候做的备份,写到日志文件中去。一个备份日志文件中最后的输入通常是备份文件的总数和备份是否成功完成的信息。-n 选项显示了文件的最后 n 行。

单独使用 tail 命令,显示主目录中 dante 文件的末端。显示了多少行?

10行。

  1. 通过使用 wc 命令,确定行数、单词数和字符数:

wc(单词计数)命令可以用于显示文本文件的行数、单词数、字节数或者字符数。当确定文件特征或者当比较两个文件的时候,这个命令是很有用的。使用不带选项的 wc 将给出文件的行数、字节数。使用带一个选项的 wc,可以确定想查看的哪一项内容。

使用 wc 命令确定主目录中 dev1 文件的行数、单词数和字符数。有多少行、多少个单词和多少个字符?

209 行、209 个单词和 1517 个字符。

  1. 使用 wc 计算目录条目的数目:

使用 wcls 命令确定主目录中条目(文件和目录)的数目。为此,必须把 ls 命令的输出导入到 wc 命令中。

更多符号是竖线,和反斜线(\)在同一个键上。在命令行提示行下,输入命令 ls | wc -w。有多少个文件和目录名(单词)?

5个。

  1. 使用 diff 命令确定文件之间的不同之处:

diff(不同)命令用于比较 2 个文本文件,找出在它们之间的不同之处。wc 命令可以比较文件,因为它计算行数、单词数和字符数。有可能 2 个文件有相同的行数、单词数和字符数,但是字符和单词不同。diff 命令可以从实际上找出文件之间的不同。

这个命令的输出把 2 个文本文件之间的不同一行一行的显示出来。diff 命令有 2 个选项:-i-c-i 选项忽略字母的大小写,例如 A 和 a 相等。-c 选项执行细致的比较。

单击红帽子,在“GNOME帮助”菜单中单击“辅助设施”-“Text Editor”命令,创建两个文件 fruit1 和 fruit2,并键入适当内容。使用 diff 命令执行细节比较,确定 fruit1 文件和 fruit2 文件之间的区别。

在 fruit1 文件和在 fruit2 文件中,哪几行是不同的?

使用截图

cat 命令:

  • 对 fruit1 文件使用 cat 命令。
  • 对 fruit2 文件使用 cat 命令。
  • 键入命令行 cat fruit1 fruit2 > filex
  • 对 filex 文件使用 cat 命令。上面的命令行做了什么工作?

把 fruit1 和 fruit2 的文本合到一起,写入 filex 文件。

可以使用哪 2 个命令来确定 2 个文件是否相同?

diff fruit1 fruit2

  1. 关闭终端窗口,注销。

2.2 基本的命令行文件管理

  1. 回顾 Linux 的文件和目录命名规则:

在本实验中,我们将创建文件和目录,因此,在开始之前,先来回顾一下 Linux 文件和目录的命名规则和指导方针。

  • 最大长度:

组成文件和目录名最大长度为255个数字字母字符。一般来说,应该尽可能的保持文件名短但是仍然有意义。

  • 非数字字母字符:

一些非数字字母字符或者元字符是可用的:下划线(_)、连字符号(-)和句点(.)。这些元字符可以在文件或目录名中使用多次(Feb.Reports.Sales 是一个有效的文件或目录名)。尽管 Shell 允许把星号(*)、问号(?)和发音符号(~)、方括号([ ])、&、管道(|)、引号(“”)和美元符号($)在文件名中使用,但这不是推荐的,因为这些字符对于 Shell 有特殊的意义。分号(;)、小于号(<)和大于号(>)是不允许作为文件名的。

  • 文件名扩展:

文件名可以包含一个或多个扩展名。扩展名常被一个应用追加到文件的末端。扩展名通常是 1 个到 3 个字符,追加到文件名的末端,之前有一个句点(.)。当命名文件的时候,您可以选择使用这个规则。

  • 大小写敏感:

Linux 文件和目录名是大小写敏感的。Project1 和 project1 不是同一个文件。在一个目录中,不能够有两个文件有着同样的名字。一般规则都是使用小写字母。

检查表 7-1 中的文件名,指出它们是否是有效或者推荐的 Linux 文件或目录名,为什么是或为什么不是。

表 7-1
文件名 是否为 Linux 文件或目录名 为什么是或为什么不是
12345abcde678 文件名合法,未超过 255 个字符
Hobbies: 2 不是 文件名不合法,存在空格
Adcd-123 文件名合法,可以有“-”
Salesrepts2001 不是 文件名不合法,存在“*”
D.projects.bj.2001 文件名合法,可以有“.”
Projects>1.bj-2001 不是 文件名不合法,存在“>”
  1. 使用 touch 命令创建文件:

每次创建一个新的字处理文档或者电子数据表,就是正在创建一个新文件,应该符合之前提到的文件命名规则。也必须拥有创建文件的目录的足够权限。

使用 touch 命令,可以同时创建一个或多个文件。一些应用要求在写文件之前,文件必须存在。touch 命令对于快速创建需要处理的文件很有用。也可以使用 touch 命令更新文件被访问的时间和日期,使文件可以再次被备份。当创建文件或目录的时候,可以指定绝对和相对的路径名。命令格式:touch filenames

  • 在主目录中使用 touch 命令创建一个名为 newfile 的文件,应该使用什么命令?

touch newfile

  • 使用 touch 命令在这个目录中创建另一个叫做 filenew 的新文件,应该使用什么命令?

touch filenew

  • 输入命令显示 practice 目录中的文件的长列表。创建的文件列出来了吗?

列出来了

  • 谁是文件的所有者?

用户名

  • 和文件关连的组是什么?

用户组

  • 创建的日期和时间是什么?

创建日期和时间

  • 文件的大小是多少?

0

  • 使用 file 命令确定 newfile 的文件类型。它是哪一类的文件?

ASCII text

  • 使用 touch 命令同时创建 3 个文件:new1、new2 和 new3,应该使用什么命令?

touch new1 new2 new3

  • 输入命令显示 practice 目录中文件的长列表。创建的 3 个新文件列出来了吗?

列出来了

  1. 使用 mkdir 命令创建新目录:

mkdir(创建目录)命令用于创建目录或文件夹。目录可以包含其他目录,称为子目录,它们可以包含文件。目录可以使用或者绝对路径名或者相对路径名创建。可以在同一行中指定多个目录名,创建多个新目录。必须有创建目录的足够权限。命令格式:mkdir directory_names

  • 从主目录中,使用相对路径名改变到 practice 目录中。使用什么命令?

cd practice

  • 使用 mkdir 命令,在这个目录中创建一个叫做 newdir 的子目录。使用什么命令?

mkdir newdir

  • 输入命令,显示 practice 目录中文件和目录的长列表。创建的目录列出来了吗?

列出来了

  • 目录的所有者是?

用户名

  • 文件的大小是多少?

0

  • 使用 file 命令确定 newdir 文件的类型。它是哪一类的文件?

directory

  • 如果名字中没有字符 dir,采取别的什么方法来识别出它是一个目录?

ls 输出时,高亮显示为蓝色。

  • mkdir 命令创建 3 个目录,目录名分别为 high、medium 和 low,应该使用什么命令?

mkdir high medium low

  • ls 命令检查创建是否成功?

  1. 使用 rm 命令删除文件:

rm 可以删除单个文件或多个文件。可以通过在 rm 命令之后指定文件的名字,或者使用星号(*)和问号(?)元字符,同时删除几个文件。在 Linux 系统中删除的文件是永远被删除了,除非使用图形界面删除文件,它们才能够被恢复。rm 命令可以带 -i(交互)选项使用,它在删除文件之前会提示用户。使用 rm -i 命令作为防范,避免误删文件。命令格式:rm [-i] filenames

  • 使用 rm 命令删除早先在 practice 目录中创建的 newfile 文件,应该使用什么命令?

rm newfile

  • 输入命令显示 practice 目录中文件的长列表。创建的文件还在吗?

不存在

  • 使用带 -i 选项的 rm 命令,删除早先在 practice 目录中创建的 filenew 文件。交互式选项起到什么作用?

避免错误删除操作

  • 删除早先创建的三个名为 new1、new2 和 new3 的文件。使用问号(?)通配符使用一个命令删除所有三个文件。使用什么命令?

rm new?

  • 输入命令,显示 practice 目录中文件的长列表。三个文件还在吗?

不存在

  • 还有其他的什么方法来删除 new1、new2 和 new3 文件?

rm new1 new2 new3

  1. 使用 rm -r 命令删除目录:

rm -r 选项用于删除目录。它将删除从目标目录开始的目录,包括所有的子目录和文件。当 rm 命令带 -r 选项使用的时候,它可以删除单个目录(空或不空)或目录树的整节。rm 命令可以带 -i 选项使用,它在删除目录之前会提醒用户。命令格式:rm -r [-i] directory_names

  • 删除早先创建的 newdir 子目录,使用什么命令?

rm -r newdir

  • 输入命令显示 practice 目录中文件的长列表,创建的子目录还在吗?

不存在

  • 改变到早先创建的 medium 子目录中,输入什么命令?

cd medium

  • 删除早先创建的 low 子目录,使用什么命令?

rm -r low

  • 用相对路径名和快捷方式,改变回到 practice 子目录中,应使用什么命令?

cd ..

  • 使用一个命令删除 high 和 medium 子目录,应使用什么命令?

rm -r high medium

  1. 练习所学习到的内容:

通过在 practice 目录中创建一个三级的目录树,练习使用 touchmkdirrm 命令。试着使用有意义的目录名。记住可以使用一个命令创建整个目录结构。在每个目录中创建多个文件。记住可以使用一个命令创建多个文件。结束的时候,请删除实验时创建的文件和目录。

  1. 关闭终端窗口,注销。

3. 分析与思考

  1. 请总结操作系统的作用有哪些?

操作系统的作用是管理电脑的硬件和软件资源,提供用户和计算机之间的接口,以及支持高级语言环境。操作系统的主要功能包括处理器管理、存储管理、设备管理、文件管理等。

  1. 操作系统提供给用户的接口方式有哪些?

操作系统提供给用户的接口方式主要有两种:程序接口和操作接口。

  1. 各有什么特点?
  • 程序接口又称为应用编程接口(API),供程序员在编制程序时以程序语句或指令的形式调用操作系统的服务和功能。
  • 操作接口又称为命令接口,供用户利用命令来组织和控制作业的执行,或者对计算机系统进行管理。操作接口的形式有多种,如命令行、菜单、图形用户界面(GUI)等。
  1. 本实验中接触到哪些接口方式?

本次实验接触到命令行接口,系统调用接口:

  • 命令行界面:包括在线命令行界面(识别用户在控制台或终端上输入的命令,解释和执行命令)和离线命令行界面(用户使用作业控制语言编写作业控制指令,将其输入系统,并控制计算机系统执行适当的操作)。在命令行界面模式下,有许多命令比较晦涩复杂,掌握所需要的时间成本较高,难以适应没有相关学习经验的普通使用者。

  • 系统调用接口:每个系统调用是一个完成特定功能的子程序。用户编写的程序可以直接调用这些子程序,由操作系统代为实现用户程序的部分功能。


操作系统实验 实验报告-1
https://flowerdown.org/posts/20230518-162832
作者
Unrealfeathers
发布于
2023年5月18日
许可协议