1操作系统实验指导书.docx
《1操作系统实验指导书.docx》由会员分享,可在线阅读,更多相关《1操作系统实验指导书.docx(50页珍藏版)》请在冰豆网上搜索。
1操作系统实验指导书
操作系统实验指导书
李丹
信息学院
一、准备工作
一、virtualbox的安装
Virtualbox是一个开源软件,完全免费,官方网站:
www.virtualbox.org,推荐去官网下载最新版。
PS:
如果在安装过程中遇到“无法通过windows徽标测试。
。
。
”全部都选择:
确定
整个安装过程英文界面,跟其他软件安装过程差不多,注意一下安装目录,还有一个警告直接无视就行。
警告直接无视掉。
。
。
---------------------------------------------------------------------------------------
二、新建一个虚拟机及给虚拟机装系统
1)打开virtualbox,点击新建,出现新建虚拟向导后直接下一步
2)给自己的虚拟电脑取个名字,并选择操作系统和版本。
如果是ubuntu的,操作系统就选linux,版本就选ubuntu。
完了后下一步
3)内存默认,当然如果你觉得你的配置牛x,或者是有其他目的也可以弄大一点。
下一步。
。
4)虚拟硬盘默认,下一步。
。
5)创建新的虚拟磁盘,默认,下一步。
。
6)默认,下一步。
。
7)位置就是你想把你建的虚拟机保存在哪。
大小就是虚拟磁盘大小自己随意,一般默认,下一步。
。
8)点create,再点create,一个虚拟机就创建好了。
接下来讲给新建的虚拟机装系统:
1)右击新建的虚拟机-----设置-----storage-----没有盘片,点击右上方的小圆盘,选择第一项,找到你系统镜像所在位置(iso格式的,gho的没试过),接下来,确定,确定。
2)点击虚拟机主界面上方的“开始”,就开始安装了,过程就不讲了。
PS:
按一下“右Ctrl”键可以实现主机与虚拟机的鼠标切换。
---------------------------------------------------------------------------------------
Vbox技巧:
1)Veiw菜单下的“host”键指的是“右Ctrl”键
2)虚拟系统运行后,可以关掉vbox软件。
实验一linux基础实验
实验内容:
1、vi编辑器
vi是visualedit的缩写
文本编辑器是所有计算机系统中最常用的一种工具。
UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi。
vi编辑器中有三种状态模式
§命令模式
§输入模式
§末行模式
图1vi编辑器的三种工作模式
表1进入编辑模式的功能键
命令
功能
i
在当前光标处进入插入状态
a
在当前光标后进入插入状态
A
将光标移动到当前行的行末,并进入插入状态
o
在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O
在当前行的上面插入新行,光标移动到新行的行首,进入插入状态
r
替换当前字符
cw
删除当前光标到所在单词尾部的字符,并进入插入状态
c$
删除当前光标到行尾的字符,并进入插入状态
c^
命令删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态
表2光标移动和翻页操作
按键
功能
方向键
进行上下左右方向的光标移动
Home
快速定位光标到行首
End
快速定位光标到行尾
PageUp
进行文本的向上翻页
PageDown
进行文本的向下翻页
Backspace
删除光标左侧的字符
Del
删除光标位置的字符
表3输入模式下光标操作键
操作类型
光标操作键
功能
光标移动
h
向左移动光标
l
向右移动光标
k
向上移动光标
j
向下移动光标
翻页
Ctrl+f
向前翻整页
Ctrl+b
向后翻整页
Ctrl+u
向前翻半页
Ctrl+d
向后翻半页
表4行内快速跳转
操作键
功能
^
将光标快速跳转到本行的行首字符
$
将光标快速跳转到本行的行尾字符
w
将光标快速跳转到当前光标所在位置的后一个单词的首字母
b
将光标快速跳转到当前光标所在位置的前一个单词的首字母
e
将光标快速跳转到当前光标所在位置的后一个单词的尾字母
表5文件内行间快速跳转
命令
功能
:
setnu
在编辑器中显示行号
:
setnonu
取消编辑器中的行号显示
1G
跳转到文件的首行
G
跳转到文件的末尾行
#G
跳转到文件中的第#行
表6删除操作
命令
功能
x
删除光标处的单个字符
dd
删除光标所在行5dd可以删除5行内容
dw
删除当前字符到单词尾(包括空格)的所有字符
de
删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
d$
删除当前字符到行尾的所有字符
d^
删除当前字符到行首的所有字符
J
删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容
表7撤销操作
命令
功能
u
取消最近一次的操作,并恢复操作结果
可以多次使用u命令恢复已进行的多步操作
U
取消对当前行进行的所有操作
Ctrl+r
对使用u命令撤销的操作进行恢复
表8复制与粘贴操作
命令
功能
yy
复制当前行整行的内容到vi缓冲区
5yy从当前行开始复制5行
yw
复制当前光标到单词尾字符的内容到vi缓冲区
y$
复制当前光标到行尾的内容到vi缓冲区
y^
复制当前光标到行首的内容到vi缓冲区
p
读取vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)
表9字符串查找
命令
功能
/word
从上而下在文件中查找字符串“word”
?
word
从下而上在文件中查找字符串“word”
n
定位下一个匹配的被查找字符串
N
定位上一个匹配的被查找字符串
表10字符串替换
命令
功能
:
s/old/new
将当前行中查找到的第一个字符“old”串替换为“new”
:
s/old/new/g
将当前行中查找到的所有字符串“old”替换为“new”
:
#,#s/old/new/g
在行号“#,#”范围内替换所有的字符串“old”为“new”
:
%s/old/new/g
在整个文件范围内替换所有的字符串“old”为“new”
:
s/old/new/c
在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
二.实验内容
1.进入和退出vi。
2.利用文本插入方式建立一个文件。
3.在新建的文本文件上移动光标。
4.对文本文件执行删除、复原、修改、替换操作。
三.实验步骤
1.进入和退出vi
<1>进入vi
在系统提示符($)下输入命令vi和想要编辑(建立)的文件名(如example),便可进入vi。
<2>退出vi
在命令方式下可有几种方法退出vi编辑器:
:
wq把编辑缓冲区的内容写到你编辑的文件中,退出编辑器。
:
q退出vi编辑器
:
q!
强行退出vi。
感叹号(!
)告诉vi,无条件退出,丢弃缓冲区内容。
这样,先前对该文件所做的修改或输入都被抛弃。
2.新建文件
<1>在提示符$之后,输入命令:
vimyfile,然后按〈Enter〉键。
<2>输入插入命令i(屏幕上看不到字符i)。
<3>然后,输入以下文本行:
Ifyouaredoingyur,
youwillnohavetoworryaboutfailure.
Constant dropping wears the stone.
<4>发现这两行有错,进行改正:
按〈Esc〉键,从插入方式回到命令方式。
按光标上移键,使光标移到第一行。
按光标左移键,使光标移到“yur”的第二个“u”处。
输入i(这是插入命令),然后输入o。
该行变成如下形式:
Ifyouaredoingyour,
按光标右移键,使光标移到“your”后面的r上。
我们想在“r”之后输入一个空格和单词“best”。
为此,输入附加命令“a”。
结果屏幕显示为:
Ifyouaredoingyouar
这是怎麽回事儿?
......原来是:
我们先前使用了插入命令i,至今并未用〈Esc〉键返回命令方式。
所以,输入的所有字符都作为输入文本予以显示。
<5>按〈Esc〉键,返回命令方式。
利用x命令删除错误字符。
然后,进入插入方式,输入正确字符。
<6>最后输入如下所示的文本:
Ifyouaredoingyourbest,
youwillnohavetoworryaboutfailure.
Constant dropping wears the stone.
<7>将你编辑的文本文件存盘。
(利用:
wq命令,或者:
x命令)
<8>重新进入vi编辑程序,编辑上面的文件。
(如:
$vimyfile)
<9>在屏幕上见到myfile文件的内容。
在屏幕底边一行显示出该文件的名称、行数和字符个数:
“myfile”3lines,characters
它仍然有错,需进一步修改。
<10>将光标移到第二行的no的o处。
输入a命令,添加字符t。
<11>按〈Esc〉,回到命令方式。
输入命令4〈Space〉,光标移至何处?
---光标右移4个字符位置。
<12>利用取代命令r将toworry改为toworry。
<13>将光标移至第三行。
输入新行命令O(大写字母),屏幕上有什麽变化?
---光标移至上一行(新加空行)的开头。
<14>输入新行的内容:
Every man is his own worst enemy.
此时,vi处于哪种工作方式?
<15>修改后的文本是以下内容:
Ifyouaredoingyourbest,
youwillnohavetoworryaboutfailure.
Every man is his own worst enemy.
Constant dropping wears the stone.
将该文件存盘,退出vi。
<16>重新编辑该文件。
并将光标移到最后一行的wears的w字母处,使用d$命令将w至行尾的字符都删除。
<17>现在想恢复15步的原状,怎麽办?
(使用复原命令u)
<18>使用dd命令删除第一行;将光标移至man的a字母处,随便插入一串字符。
将光标移到下一行的开头,执行5x命令;
<19>屏幕内容乱了!
现在想恢复15步的原状,怎麽办?
(不写盘,强行退出vi)能用u或U命令恢复屏幕原状吗?
四、实验练习
1.请在/root这个目录下建立一个名为vitest的目录;
mkdir/root/vitest
2.进入vitest这个目录当中;
cd/root/vitest
3.将/etc/man.config拷贝到本目录底下;
cp/etc/man.config
4.使用vi开启本目录下的man.config这个档案;
viman.config
5.在vi中设定一下行号;
:
setnu
6.移动到第62行,向右移动40个字符,请问您看到的双引号内是什么目录?
先按下62G,再按下40+向右键,会看到“/dir/bin/foo”
7.移动到第一行,并且向下搜寻一下『teTeX』这个字符串,请问他在第几行?
先按下1G,然后按下/teTeX搜寻,会看到他在第51行!
8.接着下来,我要将50到100行之间的man改为MAN,并且一个一个挑选是否需要修改,如何下达指令?
:
50,100s/man/MAN/gc
9.修改完之后,突然反悔了,要全部复原,有哪些方法?
(1)简单的方法可以一直按u回复到原始状态,
(2)使用不储存离开:
q!
之后,再重新读取一次该档案
10.要复制51到60行这十行的内容,并且贴到最后一行之后;
51G然后在10yy之后按下G到最后一行,再p贴上十行!
11.删除11到30行之间的20行;
11G之后,再给他20dd即可删除20行了
12.将这个档案另存成一个man.test.config的檔名;
:
wman.test.config
13.去到第29行,并且删除15个字符;
29G之后,再给他15x即可删除15个字符;
14.请问目前的档案有多少行与多少字符?
135行,共3903个字符
15.储存后离开
:
wq!
附录:
vi常用指令
进入vi的命令
vifilename:
打开或新建文件,并将光标置于第一行首
vi+nfilename:
打开文件,并将光标置于第n行首
vi+filename:
打开文件,并将光标置于最后一行首
vi+/patternfilename:
打开文件,并将光标置于第一个与pattern匹配的串处
vi-rfilename:
在上次正用vi编辑时发生系统崩溃,恢复filename
vifilename....filename:
打开多个文件,依次进行编辑
移动光标类命令
h:
光标左移一个字符
l:
光标右移一个字符
space:
光标右移一个字符
Backspace:
光标左移一个字符
k或Ctrl+p:
光标上移一行
j或Ctrl+n:
光标下移一行
Enter:
光标下移一行
w或W:
光标右移一个字至字首
b或B:
光标左移一个字至字首
e或E:
光标右移一个字至字尾
):
光标移至句尾
(:
光标移至句首
}:
光标移至段落开头
{:
光标移至段落结尾
nG:
光标移至第n行首
n+:
光标下移n行
n-:
光标上移n行
n$:
光标移至第n行尾
H:
光标移至屏幕顶行
M:
光标移至屏幕中间行
L:
光标移至屏幕最后行
0:
(注意是数字零)光标移至当前行首
$:
光标移至当前行尾
屏幕翻滚类命令
Ctrl+u:
向文件首翻半屏
Ctrl+d:
向文件尾翻半屏
Ctrl+f:
向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:
将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i:
在光标前
I:
在当前行首
a:
光标后
A:
在当前行尾
o:
在当前行之下新开一行
O:
在当前行之上新开一行
r:
替换当前字符
R:
替换当前字符及其后的字符,直至按ESC键
s:
从当前光标位置处开始,以输入的文本替代指定数目的字符
S:
删除指定数目的行,并以所输入文本代替之
ncw或nCW:
修改指定数目的字
nCC:
修改指定数目的行
删除命令
ndw或ndW:
删除光标处开始及其后的n-1个字
do:
删至行首
d$:
删至行尾
ndd:
删除当前行及其后n-1行
x或X:
删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:
删除输入方式下所输入的文本
搜索及替换命令
/pattern:
从光标开始处向文件尾搜索pattern
?
pattern:
从光标开始处向文件首搜索pattern
n:
在同一方向重复上一次搜索命令
N:
在反方向上重复上一次搜索命令
:
s/p1/p2/g:
将当前行中所有p1均用p2替代
:
n1,n2s/p1/p2/g:
将第n1至n2行中所有p1均用p2替代
:
g/p1/s//p2/g:
将文件中所有p1均用p2替换
选项设置
all:
列出所有选项设置情况
term:
设置终端类型
ignorance:
在搜索中忽略大小写
list:
显示制表位(Ctrl+I)和行尾标志($)
number:
显示行号
report:
显示由面向行的命令修改过的数目
terse:
显示简短的警告信息
warn:
在转到别的文件时若没保存当前文件则显示NOwrite信息
nomagic:
允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:
禁止vi在搜索到达文件两端时,又从另一端开始
mesg:
允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:
n1,n2con3:
将n1行到n2行之间的内容拷贝到第n3行下
:
n1,n2mn3:
将n1行到n2行之间的内容移至到第n3行下
:
n1,n2d:
将n1行到n2行之间的内容删除
:
w:
保存当前文件
:
efilename:
打开文件filename进行编辑
:
x:
保存当前文件并退出
:
q:
退出vi
:
q!
:
不保存文件并退出vi
:
!
command:
执行shell命令command
:
n1,n2w!
command:
将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:
r!
command:
将命令command的输出结果放到当前行
寄存器操作
"?
nyy:
将当前行及其下n行的内容保存到寄存器?
中,其中?
为一个字母,n为一个数字
"?
nyw:
将当前行及其下n个字保存到寄存器?
中,其中?
为一个字母,n为一个数字
"?
nyl:
将当前行及其下n个字符保存到寄存器?
中,其中?
为一个字母,n为一个数字
"?
p:
取出寄存器?
中的内容并将其放到光标位置处。
这里?
可以是一个字母,也可以是一个数字
ndd:
将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
实验二简单shell脚本应用和linux下c编程
一、实验目的
1、掌握linux常用命令
2、掌握shell脚本基本知识
3、掌握linux系统中的编辑、编译、调试、运行一个c语言程序的全过程。
二、实验内容
(一)linux常用命令
1、进入和退出SHELL。
进入shell的二种方法:
(1)是在桌面上依次单击“主程序→系统工具→终端”可打开如图2-1的终端窗口;
(2)是在Linux桌面上单击鼠标右键,从弹出的快捷菜单中选择“终端”命令,也可打开终端窗口。
2、练习与目录和文件操作相关的Linux命令:
cd—切换目录
mkdir—建立一个新目录
cp—文件拷贝
ls—显示目录及文件的内容
mv—更改文件名称
cat—浏览文件内容
chmod—更改文件或目录的访问权限
rm—删除文件
rmdir—删除目录
(1)进入SHELL。
将工作目录切换到根目录,用ls命令查看根目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。
ls命令的使用方式如下:
ls[选项][文件目录列表]
选项的含义
®-a:
显示所有文件及目录(ls规定将文件名或目录名中开头为"."的视为隐藏档,不会列出)
®-c:
按列输出,纵向排序
®-x:
按列输出,横向排序
®-l:
除文件名外,也将文件状态、权限、拥有者、文件大小等信息详细列出
®-t:
根据文件建立时间的先后次序列出
®-A:
同-a,但不列出"."(目前目录)及".."(父目录)
®-X:
按扩展名排序显示
®-R:
递归显示下层子目录
®--help:
显示帮助信息
®--version:
显示版本信息
(2)在用户主目录下建立一个名为test的新目录,将工作目录切换到test下。
然后将/etc/grub.conf文件拷贝到该目录下,并将该文件用mv命令改名为:
Test.txt。
命令参考:
mkdirtest
cdtest
cp/etc/grub.conf.
mvgrub.confTest.txt
(3)用cat命令浏览文件Test.txt的内容。
命令参考:
catTest.txt
(4)用ls命令查看test下的文件的权限。
命令参考:
ls–lTest.txt
(5)用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。
命令参考:
rm*.*
cd..
rmdirtest
(6)创建一个普通用户
#useraddtest1
给这个用户一个密码
#passwdtest1
第二种方法:
添加一个用户test2,密码redhat
#useraddtest2
#echoredhat|passwdtest2--stdin
(8)切换到test1这个用户
#su-test1
(9)验证用户信息及当前位置
$whoami
$pwd
$id
(10)从test1这个用户退回到root
$exit
(11)删除test1这个用户
#userdel-rtest1
(二)shell脚本
1、
(1)建立一个脚本
程序必须以下面的行开始(必须放在文件的第一行):
#!
/bin/sh
(2)当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行:
chmod+xfilename
(3)可以通过输入:
./filename来执行你的脚本。
(4)注释
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。
2、练习
(1)键入vi,按回车。
编辑下列内容:
#!
/bin/sh
#对变量赋值:
a="helloworld"
#现在打印变量a的内容:
echo"Ais:
"
echo$a
(2)编辑结束,存盘
:
whello
(3)之后键入执行(在root下)
chmod+xhello
(4)最后输入
./hello执行该脚本。
(5)这个脚本将会输出:
Ais:
helloworld
(6)编辑并运行下面shell脚本,观察其结果
#!
/bin/sh
echo"WhatisyourfavouriteOS?
"
selectvarin"Linux""GnuHurd""FreeBSD""Other";do
break
done
echo"Youhaveselected$var"
3、shell脚本应用
--------------------------
*批量添加用户50个用户{user1---user50}
#vimadu.sh
#!
/bin/bash
forNUMin`seq150`
do
useradduser$NUM
echouser$NUM|passwduser$NUM--stdin
done
#chmod700adu.sh
#./adu.sh
*批量删除用户
#vimdelu.sh
#!
/bin/bash
forNUMin`seq150`
do
userdel-ruser$NUM
done
#chmod700delu.sh
#./delu.sh
(三)使用gcc编译器
1、范例
在vi中编写一个abc.c程序,对程序进行编译、连接、运行。
具体如下:
$viabc.c
#include
main()