Shell脚本能提高用户操作和管理员进行系统管理的效率,一般步骤为:用编辑器编写脚本程序;Shell作为解释程序;非交互地执行脚本。
系统配置文件、Shell脚本文件等都是文本文件,编辑它们时都要使用文本编辑器。
在Linux系统中有多种文本编辑器,其中既有字符界面的(Vi、EMACAS等),也有图形界面的(如“附件”菜单下的“文本编辑器gedit”等),用户可以根据自己的喜好选择使用。
在Shell中输入vi/vim即可打开编辑器,编辑器的界面如图3.1所示。
图3.1 编辑器的界面
1.Vi的三种工作模式
Linux/Unix下的配置文件都是文本文件,Vi常见有3种工作模式:命令模式、编辑模式、底行模式。
1)命令模式
启动Vi默认进入命令模式。此时界面不能编辑,只能接受命令(键入的命令看不到)文件的保存、退出、文本的删除、复制、搜索等操作。
2)编辑模式
命令模式下用i(sert),a(ppend),o,s等均可进入该模式。按【Esc】返回命令模式。
3)底行模式
底行模式实际上也是命令模式的一种,在命令模式下输入冒号进入一个命令行,可显示地输入命令(所以也有些书中认为是两种工作模式)。
3种模式可自由切换,一般切换命令就是操作的英文单词的首字母。
2.Vi的启动
启动命令:vi my.txt
如果文件存在,则Vi显示文件内容并等待用户的命令。
如果指定的文件不存在,则Vi将告知用户这是未命名的文件,并进入一个空白的界面。
启动Vi时都是默认处于命令模式。用户必须使用命令切换到文本输入模式才能进行输入编辑,或者可执行删除、复制等编辑命令。
3.Vi的退出
冒号进命令行模式下:
:q!——不存档强制退出。
:w——保存但不退出,w(rite)后可加所要存档的文档名。
:wq——存档后退出。
命令模式下输入,功能与:wq相同。
:x与:wq相同。
命令模式:
ZZ/ZQ:保存/不保存退出。
4.如何编辑
必须从命令模式转入插入模式才能进行输入编辑,可用命令有:
1)新增(append)
a:从光标所在位置后面开始新增资料;
A:从光标所在行最后面的地方开始新增资料。
2)插入(insert)
i:从光标所在位置前面开始插入资料;
I:从光标所在行的第一个非空白字元前面开始插入资料。
3)开始(open)
o:在光标所在行下方新增一列并进入输入模式;
O:在光标所在行上方新增一列并进入输入模式。
5.命令模式下的操作
1)删除
x:删除光标所在字符;
dw删除一个单词;
dd:删除光标所在的行;
u:恢复被删除的文字;
s:删除光标所在字节,并进入输入模式;
d光标键:
左:删除光标前面的字符;
右:删除光标所在的字符;
上:将当前行与上一行删除;(www.xing528.com)
下:当前行与下一行删除;
#表示数字:
#x:删除几个字符,如3x;
#dw:删除几个单词,如3dw表示删除3个单词;
#dd:删除多个行,如3dd 表示删除光标行及光标的下两行;
d$:删除光标到行尾的内容;
nd上、下光标键:
删除当前行的上、下几行文本(包括当前行)
2)文本复制、粘贴
Y:复制命令;
yy:复制整行;
yw:复制光标所在的单词;
nyw:复制包括光标所在的n个单词;
nyy:复制包括当前行在内的n行;
P:粘贴命令;
h、j、k、l:光标移动
nG:移动到底n行行首。
6.通用缓冲区和专用缓冲区
一般情况下,最近一次的抽取、删除、插入和修改的内容都将存放在通用缓冲区中。利用这些缓冲区可以非常方便地实现文本内容的剪切和粘贴。
专用缓冲区的名字采用双引号加单个字母表示,如”a,”b等。
命令模式下输入”ayy,是将当前行的内容复制到专用缓冲区a中。输入”ap,则将专用缓冲区中的内容粘贴到光标位置之后。
对单个文件的编辑,专用缓冲区没有什么优势,在对多个文件编辑时才能体现其优势:从当前文件切换到下一个文件时通用缓冲区的内容会丢失,而专用缓冲区的内容却依然存在。
4dd是删除4行,Vi自动将这4行的内容保存在通用缓冲区中。
8j表示将光标向后移动8行。
p表示从通用缓冲区中取出内容,粘贴在光标位置后面。由于dd命令以行为单位存放使通用缓冲区的内容,当取出缓冲区的内容时,Vi将它们粘贴在当前行之后。
2yy表示从当前行开始抽取两行到通用缓冲区。再将光标移动到目标行的位置后,输入p复制。
7.字符串的查找、替换
:/string:搜索指定的字符串;
按键【N】:继续进行搜索。
如果写的是斜杠(/):按【N】键会从当前位置向后查找;如果写的是问号(?),按【N】键则从当前位置向前查找。
8.查找且替换
1):%s /SEARCH /REPLACE
把文档中所有SEARCH替换成REPLACE。
2):#,# s /SEARCH /REPLACE /g
#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE。
3):s /SEARCH /REPLACE /g
把当前光标所在行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示。
9.与当前文件有关的读写操作
1):r file_name
导入文件内容添加到光标所在行后。
2):n1,n5 w file_name
将从第n1行到n5行的内容保存到文件file_name中。
如果是从当前行到倒数第3行,也可以表示为.,$-2;如果指定的文件已存在,则Vi将给出“File exists”的错误信息。
10.Vi操作中执行其他shell命令
用户在编辑文本文件过程中,可以在不退出Vi的情况下执行Shell命令,行命令模式输入:
:!命令
例如:
:!ls –l
:!mount /dev/sda1 /mnt
命令执行完成后,系统会提醒用户按任意键返回Vi编辑器中继续文本文件的编辑工作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。