您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页linux的基本操作

linux的基本操作

来源:意榕旅游网
vi的基本操作

一、实验要求

1.熟悉并掌握vi命令模式、文本编辑模式和最后行模式三种工作模式之间的转换方法。 2.掌握利用vi新建和保存文件;熟悉光标的移动,文本的插入与删除等操作。 3.掌握字符串替换;行的复制、移动、撤消和删除等操作。

二、实验内容

1.新建文本文件’

【操作要求】利用vi新建文件f2,内容为:

How to Read Faster

When I was a schoolboy I must have read every comic book ever published. But as I got older, my eyeballs must have slowed down or something I mean, comic books started to pile up faster then I could read them!

It wasn't until much later, when I was studying at college,I realized that it wasn't my eyeballs that had gone wrong. They're still moving as well as ever. The problem is that there's too much to read these days, and too little time to read every WORD of it. 【操作步骤】

(1)启动计算机后,以普通用户(hellen)身份登录字符界面。

(2)在Shell命令提示符后输入命令“vi”,启动vi文本编辑器,进入命令模式。 (3)按“i”键,从命令模式转换为文本编辑模式,此时屏幕的最底边出现“——INSERT——” 字样。

(4)输入上述文本内容。如果输入出错,可使用退格键或Delete键删除错误的字符。 (5)按Esc键返回命令模式。

(6)按“:”键进入最后行模式,输入“w f2”,就可以将正在编辑的内容保存为f2 文件。屏幕底部显示“\"f2\"[New]3L,482C written”字样,表示此文件有3行,482 个字符。注意:vi中行的概念与平时所说的行有所区别,在输入文字的过程中由 于字符串长度超过屏幕宽度而发生的自动换行,vi并不认为是一行,只有在vi中 按一次Enter键,另起一行的才是新的一行。 (7 )按“:”键后输入“q”,退出vi。

2编辑文件

【操作要求1】打开f2文件并显示行号。

【操作步骤】

(1)输入命令“vi f2”,启动Ⅵ文本编辑器并打开f2文件。

(2)按“:”键切换到最后行模式,输入命令“set nu”,每一行前出现行号。

(3)vi自动返回到命令模式,连续两次输人“Z”,就退出vi。

【操作要求2】在f2文件的第一行后插入如下一行内容:“With the development of

society, the ability of reading becomes more and more important.\",

并在最后一行之后添加一行,内容为:“We must know some methods to read faster.” 【操作步骤】

(1)再次输入命令“vi f2”,启动vi文本编辑器并打开f2文件。

(2)按“a”键.进入文本编辑模式,屏幕底部出现“——INSERT——字样。

(3)利用方向键移动光标到第一行行尾后,按Enter键,另起一行。输入“With the development of society,the ability of reading becomes more and more important.”。

(4)将光标移动到最后一行的行尾,按Enter键,另起一行。输入“we must know some methods to read faster.”。

【操作要求3】将文本中所有的“eyeballs”用“eye-balls”替换。

【操作步骤】

按Esc键后输入“:”,进入最后行模式。因为当前f2文件中共有5行,所以输入命 令“1,5 s/eyeballs/eye-balls/g”,并按Enter键,将文件中所有的eyeballs”替换为 “eye-balls”。

【操作要求4】把第二行移动到文件的最后,删除第一和第二行并恢复删除,并不保存

修改。 【操作步骤】

(1)按“:”键,再次进入最后行模式,输入命令“2,2 m5”,将第二行移动到第 五行的后面。

(2)按“:”键,输入“1,2 d”,删除第一和第二行。 (3)按“u”键,恢复被删除的部分。

(4)按“:”键,进入最后行模式,输入“q!”退出vi,不保存对文件的修改。

【操作要求5】复制第二行,并添加到文件的最后,删除第二行,保存修改后退出vi。

【操作步骤】

(1)再次输入命令“vi f2”,启动vi文本编辑器并打开f2文件。

(2)按“:”键,进入最后行模式,输入“2,2 co 5”,将第二行的内容复制到第五 行的后面。

(3)移动光标到第二行,键入“dd”命令,原来的第=行消失。

(4)按“:”键,输入“wq”,存盘并退出vi。

3.Linux简单C程序实现

(1)实验要求

要求在Linux里实现简单的c语言程序,实现Linux系统中的编译方法,完成几个小实例。 (2)实验指导和步骤

①例1.编写一个简单的程序,要求在屏幕上输出“This is the first Linux c program!”。 a.实验步骤

步骤1:编辑源程序代码 [root@localhost ~]# vi 3-1.c

☞注意:进入vi编辑器,按i键进入插入模式,然后输入程序代码。编写完成后,按Esc

键,

然后输入“:wq”回车。源程序代码文件编写完成

步骤2:输入程序代码

#include int main() { printf(\"This is the first Linux c program!\\n\"); return 0; }

步骤3:编译程序

[root@localhost ~]# gcc 3-1.c –o 3-1

☞注意:在编译程序前,最好确认源文件的存在,可以用ls命令查看。然后输入上述命

令进行编译。

步骤4:运行程序 [root@localhost ~]# ./3-1

☞说明:用ls命令查看当前目录,发现生成了可执行文件3-1,说明编译成功,可以运行

程序。

输入“./可执行文件”便可运行程序。终端出现“This is the first Linux c program!”。 b.查看执行结果 ②例2.有一函数,

x (x<1) y= 3x-11 (1≤x<20) 2sin(x) (x≥20)

要求写一个函数,输入x,输出y的值。 a.实验步骤

步骤1:编辑源程序代码 [root@localhost ~]# vi 3-2.c 步骤2 :输入程序代码 #include #include int main() { doublex,y; printf(\"请输入x:\"); scanf(\"%lf\ if(x<1) { y = x; }

else if(x<20) { y = 3*x - 11; } else

{ y = 2*sin(x); } printf(\"x=%lf,y=%lf\\n\ return 0; }

步骤3:编译程序

[root@localhost ~]# gcc 3-2.c –o 3-2

☞注意:输入gcc 3-2.c –o 3-2命令后会发现编译器报错(见下图):undefined reference to

„sin‟,即没有定义函数sin,原因是没有指定函数sin的具体路径,所以首先要对函数进行查找。 输入如下命令:[root@localhost ~]# nm –o /lib/*.so|grep sin 在查找结果中找到如下内容:/lib/libm-2.9.so:00ab0a40 W sinl

除去函数库头lib及函数的版本号-2.9,余下的符号为“m”,在编译时用字符“l”与“m”连接成“lm”,在编译时加上此参数。 编译结果如图3-4所示。

步骤4:加“-lm”参数编译程序 [root@localhost ~]# gcc 3-2.c –o 3-2 –lm

步骤5:运行程序 [root@localhost ~]# ./3-2

b.查看执行结果

程序的执行结果如图3-5所示。

图3-5 例2执行结果图

③例3.输入学生成绩,要求输出成绩等级。90分以上为„A‟,80~90为„B‟,70~79为„C‟,60~69为„D‟, 60以下为„E‟。 a.实验步骤

步骤1:编辑源程序代码 [root@localhost ~]# vi 3-3.c

步骤2:输入程序代码 #include

int main(intargc,char** argv) { int score; char grade; printf(\"请输入学生成绩:\\n\"); scanf(\"%d\ while(score > 100 || score <0) { printf(\"输入有误,请重新输入:\\n\"); scanf(\"%d\ } switch(score/10) { case 10: case 9: grade = 'A'; break; case 8: grade = 'B'; break; case 7: grade = 'C'; break; case 6: grade = 'D'; break; default: grade = 'E'; break; } printf(\"%c\\n\ return 0; }

步骤3:运行程序 [root@localhost ~]# ./3-3

b.查看执行结果

程序的执行结果如图3-6所示。

图3-6 例3执行结果图

④例4.求解一元二次方程式ax²+bx+c=0的根。要求输入a、b、c的值,输出x的值。 a.实验步骤

步骤1:编辑源程序代码 [root@localhost ~]# vi 3-4.c

步骤2:输入程序代码 #include #include #include int main() { float a,b,c,t,r,x1,x2,p,q; printf(\"请输入a,b,c:\\n\"); scanf(\"%f,%f,%f\ if(a == 0) printf(\"非二次方程!\\n\"); else { t = b*b-4*a*c; r=sqrt(t); x1 = ((-b)+r)/(2*a); x2 = ((-b)-r)/(2*a); if(t == 0) printf(\"有两个相等实根:\\n x1 = x2 = %5.2f\\n\ else if(t > 0) printf(\"有两个不等实根:\\n x1= %5.2f,x2=%5.2f\\n\ else { p = (-b)/(2*a); r=sqrt(-t); q = r/(2*a); printf(\"有两个共轭复根:\\n x1=%5.2f + %5.2f,x2 = %5.2f + %5.2f\\n\ } } return 0; }

步骤3:编译程序

[root@localhost ~]# gcc 3-4.c –o 3-4 –lm

☞注意:如果程序中用到函数sqrt(),同sin(),需要手动添加参数-lm来链接动态库。

步骤4:运行程序 [root@localhost ~]# ./3-4

b.查看执行结果

输入各种情况下的a,b,c的值,输出其对应的一元二次方程的解,具体见图3-7

图3-7 例3执行结果图

⑤例5.求1+2!+3!+4!+…20!的值。 a.实验步骤

步骤1:编辑源程序代码 [root@localhost ~]# vi 3-5.c 步骤2:输入程序代码 #include int main() { float s=0,t=1; int n; for(n=1;n<=20;n++) { t=t*n; s=s+t; } printf(\"%f\\n\ return 0; }

步骤3:编译程序

[root@localhost ~]# gcc 3-5.c –o 3-5

步骤4:运行程序 [root@localhost ~]# ./3-5

b.查看执行结果

程序的执行结果如图3-8所示。

图3-8 例5执行结果图

3.3.2程序错误查找及调试

⑥例6.用递归方法求n!。 a.实验步骤

步骤1:编辑源程序代码

[root@localhost ~]# vi 3-6.c

步骤2:输入程序代码 #include floatfac(int n) { float f; if(n<0) printf(\"错误!\\n\"); else

{ if(n == 0 || n == 1) f = 1; else f = fac(n-1)*n; } return f; }

int main(intargc,char **argv) { int n; float y; printf(\"请输入一个数:\"); scanf(\"%d\ y=fac(n); printf(\"%d != %d\\n\}

步骤3:编译程序 [root@localhost ~]# gcc 3-6.c –o 3-6

步骤4:运行程序 [root@localhost ~]# ./3-6

程序执行结果如图3-8所示。

图3-8 例6执行结果

很明显,以上运行结果是不正确的。

步骤5:用gdb进行调试 i. 进入调试环境

[root@localhost ~]# gcc 3-6.c –o 3-6 –g

☞注意:在编译的时候要加上参数“-g”,这样编译出的可执行代码才包含调试信息,可

以通过

Gdb进行调试。

[root@localhost ~]# gdb 3-6 程序的执行结果如图3-9所示。

图 3-9 gdb启动界面

☞说明:可以看到,在gdb启动画面中有gdb的版本号、使用的库文件等信息,在gdb

的调试环境中,提示符是“(gdb)”。调试程序都在“(gdb)”后输入相应的命令。具体命令参考表3-10,或者输入help查看。

ii查看源文件

在gdb中输入“l”(list)就可以查看源代码,一次显示10行。gdb中不输入任何命令,直接按Enter键,重复上一次命令。

命令的执行结果如图3-10所示。

图3-10 要调试的程序的源文件内容

iii设置断点

在gdb中输入命令“b”(break),后面跟行号或函数名。结果如图3-11所示。

图3-11 设置断点步骤

iv查看断点信息

设置完断点,可以用命令“info b”(info break)查看断点信息。结果如图3-12所示。

图3-12 断点信息查看

v运行程序

输入“r”(run)开始运行程序。默认从第一行开始运行,也可以重指定行开始运行。如图3-12所示。

图3-12 程序运行步骤

vi单步运行

在gdb中输入“n”(next)或者“s”(step)可以单步运行程序,两者区别在于:若有函数调用是,“s”会进入该函数而“n”不会进入该函数。在这里我们选择“n”。结果如图3-13所示。

图3-13 程序单步运行

vii查看变量值

在gdb中输入“p 变量名”可以查看该变量的值。使用方法如图3-14所示。

图3-14 变量值的查看

gdb在显示变量值时都会在对应值前加“$n”标记,它是当前变量值的引用标记,以后想再引用此变量,可以直接使用“$n”,提高调试效率。

可以看出运行完该函数后,f的值为1。即1!=1,说明到此时为止函数没有出错。

viii继续运行程序

继续运行结果如图3-15所示。

图3-15 程序调试中间过程

变量y的值为1,但是最后输出的结果却为0,说明错误出在“%d”上,查看源代码,发现y为float型,而%d对应得是int型。

ix退出gdb环境

在gdb中输入“q”(quit)即可退出gdb。退出调试命令用法如图3-16所示。

图3-16 退出调试

步骤5:修改源代码

找出错误后修改源代码。 [root@localhost ~]# vi 3-6.c 源程序的修改如图3-17所示。

图3-17修改原程序界面

步骤6:重新编译运行程序 [root@localhost ~]# gcc 3-6.c –o 3-6 [root@localhost ~]# ./3-6

步骤7:查看执行结果 输入n,输出n!,本次测试中n=10,输出结果如图3-18所示

图3-18 例6执行结果图 结果正确,修改成功。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务