第4章 屏幕编辑程序vi简介
Vi是UNIX/Linux系统自带的功能强大的可视化的编辑器。 一、进入和退出vi
1、在Linux提示符下键入“vi 文件名”即可启动vi Vi有以下3种工作模式:
(1)命令行模式:进入vi时处于命令模式。输入某些编辑命令后可对文本进行编辑。
(2)文本输入模式:在命令模式下,按下a键,进入追加方式,以后输入的字符插入在光标的右边;按下i键,进入插入方式,以后输入的字符插入在光标的左边;按下r键,进入覆盖方式,以后输入的字符覆盖光标处的字符。
(3)最后行模式:在文本输入模式下,按ESC键,结束输入模式,再输入冒号“:”就进入最后行模式了,还可以使用“?”键和“/”键进入最后行模式。 2、要退出vi,先按下ESC键,退出输入模式,再键入冒号“:”,此时光标会停留在最下面一行,即进入最后行模式,再按“q”键,按回车键即可。
例如:上一章列举的shell脚本程序都可以用vi建立。在shell提示符$下键入:vi ex2.sh ,回车,可进入vi,按i键后,可输入脚本程序内容。
也可以用vi建立c语言程序,在shell提示符$下,键入vi 程序名.c,回车,可进入vi,按i键后,可输入c语言程序内容了。 二、命令模式和文本输入模式下的主要操作命令
命令模式和文本输入模式提供了较多的按键和组合键来执行命令,以帮助用户编辑文件。由于这些命令较多,这里只作简单介绍。
1、移动光标命令
可以利用键盘上的上左右箭头键来移动光标到指定的位置,还可以用一般的键来移动光标。
h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符
Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行
w或W :光标右移一个字至下一个字的字首 b或B :光标左移一个字至前一个字的字首 e或E :光标右移到当前字的字尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行
n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 2、屏幕翻滚类命令
21
Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b:向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 3、插入文本类命令 i :在光标前插入文本 I :在当前行首插入文本 a:光标后插入文本
A:在当前行尾插入文本 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 4、删除命令
ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 5、搜索及替换命令
/字符串:从光标开始处向文件尾搜索“字符串” ?字符串:从光标开始处向文件首搜索“字符串” n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 三、最后行模式下的操作命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 :n1,n2 d :将n1行到n2行之间的内容删除 :w :保存当前文件
:e filename:打开文件filename进行编辑 :x:保存当前文件并退出 :q!:不保存文件并退出vi
: wq 将缓冲区内容写入磁盘中,并退出vi。 : ZZ 同wq : q 退出vi,若文件被修改过,则要求确认是否放弃修改的内容,此指令可与: w 配合使用。
22
第5章 gcc编译器简介
当用户把Red Hat Linux9.x安装好之后,gcc也已经安装好了。Gcc是Linux平台下的标准c编译器,功能强大。下面对gcc的基本使用作简要介绍。
二、简单的c语言程序
下面通过一个非常简单的c语言程序来说明gcc编译器的使用,c语言程序如下 #include
Printf(”Hello world!\\n”); }
该程序的文件名为:exam.c,用户可以使用gcc编译器对exam.c进行编译,gcc的可执行文件在/usr/bin目录下,/lib和/usr/lib目录下是库文件,/usr/include目录下是头文件。
在shell提示符$下键入
gcc exam.c //编译exam.c程序 gcc将创建一个名叫a.out的文件,然后使用下面命令执行该程序。在shell提示符下键入:./a.out
“./”表示执行当前目录下的可执行文件或脚本程序。 最后输出结果如下: Hello world!
这就是Linux平台上编译的一个c语言程序。
我们还可以通过使用选项-o来改变编译后的目标文件名,例如可以使用下面的命令行把a.out改成exam1.out。
gcc –o exam1.out exam.c
这时可执行文件名就改变成exam1.out了,而不是a.out。如同运行a.out一样可以运行exam1.out。如下命令行所示
$./exam1.out
会得到同样的运行结果。 二、gcc选项简介
gcc的完整格式:gcc 选项 文件名
gcc命令行按“选项”指定的操作对给定的文件进行编译处理。在gcc后面可以有多个编译选项,同时进行多个编译操作。Gcc的主要选项有:
-x language: 指定使用的语言(c、c++或汇编) -c :只对文件进行编译和汇编,但不进行连接 -S :只对文件进行编译,但不汇编和连接
-E :只对文件进行预处理,但不编译、汇编和连接
-o file1 file2:将文件file2 编译成可执行文件file1 -I library:用来指定所使用的库文件
-I directory:为include文件搜索指定目录 -w :禁止警告信息
-pedantic:严格要求符合ANSI标准 -wall:显示附加的警告信息 -g :显示排错信息以便于调试
23
-p :产生prof所需的信息
实验一 熟悉Linu环境x -pg :产生gprof所使用的信息
-O(-OI):对编译出的代码进行优化 1、实验目的 -O高一级的优化 -O2:进行比(1)了解Linu操x作系统的 启动过 程。-O3:产生更高级别的优化(2)了解Ligccnu文x件 的组织结构 。-v:显示版本(3)练习使用Linu常x用命令 。注意:区分选项字母的大小写 (4)学中总共有一百多个编译选项,其中很多选项用户可能永远也不会用到,习和掌s握hel编l程的常用方法 。gcc2、实验要求 而很多选项用户只会偶尔用到,所以这里只给出一些主要的选项。 (1)查看Linu操x作系统目录结构 。 (2)练习Linu常x用命令 。(3)理解命令接口的命令 形式
(4)将例题输入运行,s体h会el编l程方法 。
3、实验内容 (1)练习linu常x用命令,常用命令有s、mkdi、rrm、cp、pw?d? l: 编程(2)输入以下程序并执行,s体he会ll技巧 1)输入下列程序并存为e文x1件.sh
#!/bin /csh
va”rh=ell”o echo$ var ec”hTohe program $0 is no”w running ec”hTohe first paramet e”r was $1
ec”hTohe second paramet”r was $2 e ech”oThe parameter lis” was $* t ec”hTohe us’esr home direi s $HOME ctory ” w word ech”oplease enter a n”e read var echo $var
exi t 0 2)输入下列程序并存为e文x2件. s h #!/bin/c sh count =1 While test $c–oluen t 5
d o echo” here is c”y cle count=$(($cou nt+1))
don e exit 0
第六章 实 验
24
实验一 熟悉Linux环境
1、实验目的
(1)了解Linux操作系统的启动过程。 (2)了解Linux文件的组织结构。 (3)练习使用Linux常用命令。
(4)学习和掌握shell编程的常用方法。 2、实验要求
(1)查看Linux操作系统目录结构。 (2)练习Linux常用命令。 (3)理解命令接口的命令形式
(4)将例题输入运行,体会shell编程方法。 3、实验内容
(1)练习linux常用命令,常用命令有:ls、mkdir、rm、cp、pwd?? (2)输入以下程序并执行,体会shell编程技巧
1)输入下列程序并存为文件ex1.sh #!/bin/csh var=”hello” echo$var
echo”The program $0 is now running ” echo”The first parameter was $1” echo”The second parameter was $2”
echo”The parameter list was $*”
echo”The user’s home directory is $HOME” echo”please enter a new word” read var echo $var exit 0
2)输入下列程序并存为文件ex2.sh #!/bin/csh count=1
While test $count –le 5 do
echo ”here is cycle” count=$(($count+1)) done exit 0
25