思考题3
3.1 进入和退出vi的方法有哪些?
答:进入vi的方法:在系统提示符(设为$ )下输入命令vi和想要编辑(建立)的文件名,便可进入vi,如:$ vi filename
退出vi的方法:
(1) :wq 把编辑缓冲区的内容写到你编辑的文件中,退出编辑器,回到 shell下。
(其操作过程是,先输入冒号“: ”,再输入命令wq。以下命令操作相同。)
(2) :ZZ(大写字母ZZ) 仅当做过修改时才将缓冲区内容写到文件上。
(3) :x 与:ZZ相同。
(4) :q! 强行退出vi。感叹号(!)告诉vi,无条件退出,丢弃缓冲区内容。
3.2 vi编辑器的工作方式有哪些?相互间如何转换?
答:vi编辑器有三种工作方式: 命令方式、插入方式和ex转义方式。
●Shell命令→vi的命令方式:输入命令vi进入编辑器时,就处于vi的命令方式。
●vi的命令方式→Shell命令:在vi的命令方式下使用退出命令,可以返回shell命令方式。
●vi命令方式→插入方式:通过输入vi的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令©或取代命令®可以从命令方式进入到插入方式。
●插入方式→vi命令方式:由插入方式回到命令方式的办法是按Esc键(通常在键盘的左上角)。
●vi的命令方式→Ex转义方式:在vi的命令方式下,输入一个冒号(:),就进入Ex转义方式。
●Ex转义方式→vi的命令方式:转义命令执行后,自动回到vi命令方式。
3.3 建立一个文本文件,如会议通知。
(1)建立文件notes,并统计其大小。
(2)重新编辑文件notes,加上一个适当的标题。
(3)修改notes中开会的时间和地点。
(4)删除文件中第3行,然后予以恢复。
答:上机题。体会vi编辑器的工作方式及相互转换,熟悉基本命令的使用。可参照以下步骤做:
(1)进入vi ,建立一个空文件notes;
(2)进入插入方式,编辑一个会议通知;
(3)返回vi命令方式,保存编辑的内容并退出vi;
(4)在shell命令方式下,执行wc命令,统计文件notes的大小;
(5)利用vi,重新编辑文件notes,加上一个会议通知的标题;
(6)保存编辑内容并退出vi,利用cat命令查看该文件的内容;
(7)重新编辑文件notes,修改其中开会的时间和地点;
(8)保存内容并退出vi,然后利用cat命令查看该文件的内容,注意内容的变化;
(9)重新编辑该文件,利用文本删除命令删除其中的第3行;接着分别利用复原命令u和U恢复删除的内容。注意各个命令执行后屏幕显示内容的变化。从中体会各命令的功能。
3.4 建立一个文本文件,将光标移至第5行上。分别利用c,C和cc命令进行修改。
答:上机题。体会在vi编辑方式下,光标移动的方式和不同修改命令的功能。注意各命令的使用方式和光标位置的移动。
3.5 在vi之下,上、下、左、右移动光标的方式有哪些?
答:参照本教材P79的图3.2解答。
3.6 解释下述vi命令的功能:
20G 18 | dM 6H d4B x cw 10cc 3rk 5s
7S >8M /this ?abc?-5 mg g/int/p
答:20G 光标移至第20行的开头。
18 | 光标移至当前行的第18列上。
dM 删除从当前行至屏幕中间行的所有行
6H 将光标移到距离屏幕顶部5行的行首
d4B 从光标位置反向删除4个词(包括光标所在词)。
x 删除光标所在的字符。
cw 将光标所在字符至词尾删除,然后用新输入的文本代替。
10cc 先删除光标所在行及其下面9行(共10行),然后以新输入的文本代替。
3rk 表示从光标位置开始向右共有3个字符被k替代。
5s 光标所在字符及其后的4个字符(共5个字符)被新输入的字符序列替代。
7S 当前行及其下面6行(共7行)被新输入的正文替换。
8M 将当前行和屏幕中间行之间各行向右移动8个字符
/this 从光标所在行开始向前查找字符串“this”,找到后就做上标记。
?abc?-5 从光标所在行开始向后查找字符串“abc”,光标停在首次找到行之前的倒数第5行的行首,即行号是(匹配行号-5)。
mg 在光标所在位置做上标记g,但屏幕上并不显示 “ g ”。
g/int/p 在屏幕上显示当前所编辑的文件中所有包含字符串“int”的行。
3.7 如果希望进入vi后光标位于文件的第10行上,应输入什么命令?
答:设要编辑的文件名是abc,且该文件大于10行。在shell提示符后输入以下命令:
vi +10 abc
3.8 不管文件中某一行被编辑了多少次,总能把它恢复成被编辑之前的样子,应使用什么命令?
答:使用U(大写字母)命令就能把当前行恢复成被编辑之前的样子。
3.9 要将编辑文件中所有的字符串s1全部用字符串s2替换,包括在一行中多次出现的字符串,应使用什么命令格式?
答:可以使用的命令格式是:g/s1/s//s2/g
思考题4
4.1 常用的shell有哪几种?Linux系统中默认的shell是什么?
答:常用的有: Bourne shell(简称sh)、C shell(简称csh)、Korn shell(简称ksh)和Bourne Again shell(简称bash)。
Linux系统中默认的shell是bash。
4.2 简述shell的主要功能。bash有什么特点?
答:shell具有如下主要功能:
(1)命令组合,构成新的命令;
(2)提供了文件名扩展字符(通配符,如* 、 ?、 [ ]);
(3) 可以直接使用shell的内置命令,而不需创建新的进程;
(4)允许灵活地使用数据流,提供通配符、输入/输出重定向、管道线等机制,方便了模式匹配、I/O处理和数据传输;
(5) 结构化的程序模块,提供了顺序流程控制、条件控制、循环控制等;
(6)提供了在后台(&)执行命令的能力;
(7)提供了可配置的环境,允许创建和修改命令、命令提示符和其他的系统行为;
(8)提供了一个高级的命令语言,能创建从简单到复杂的程序。这些shell程序称为shell脚本。
bash是Linux系统默认的一个shell。bash不但与Bourne shell兼容,还继承了C shell,Korn shell等下述优点:
① 命令行历史。使用命令行历史特性,可以恢复以前输入的命令。
② 命令行编辑。可以利用编辑器(如vi)修改已经输入的命令。
③ 命令补全。能在输入文件名的一部分之后,由系统自动填入剩余的部分。
④ 别名扩展。能建立代表某些命令的名字。
4.3 执行shell脚本的方式主要是哪些?
答:执行shell脚本的常用方式基本上有两种:
(1) 以脚本名作为参数。其一般形式是: $ bash 脚本名 [参数]
(2) 将shell脚本的权限设置为可执行,然后在提示符下直接执行它。
例如,设abcd是shell脚本文件,执行步骤如下