分类: 嵌入式
2012-08-18 15:56:17
嵌入式开发绝大部分时间是字符界面下进行的,基于宿主机+客户机的模式,一般都是用串口或网络远程登录到linux,笔者现在的学习环境就是模拟成这样,在win7下安装虚拟机软件VMware,新建虚拟机安装ubuntu11.10,然后在win7下借助secureCRT登录到虚拟机的linux.离开了图形界面(GUI),鼠标变的无用武之地了,此时键盘才是主角,所以掌握linux的常用命令是学习嵌入式的第一步。
第二步学习vi编辑器,一款优秀的字符界面的文本编辑器,常用于查看和修改文件(要熟练使用它,所以在以后的学习中用来编辑源代码)
1. 进入程序:
直接vi命令或vi 文件名(如果当前目录无此文件则新建一个空文件)
vi +n 文件名(n为要将光标定位到第n行,修改配置文件的时候经常用)
2. vi编辑器的3种模式:指令行模式(Command Mode)、文本输入模式(Input Mode)、行末模式(Last line Mode)(关于这3种模式,刚开始笔者也很困惑,为什么要搞那么复杂,这是因为文本界面的交互只能通过键盘输入,这样的设计是很合情合理的)
3. 三种模式的切换关系如所示。
指令模式下输入 a、i、o、A、I、O,进入文本输入模式
文本输入模式下按ESC进入指令模式
指令模式下输入:进入末行模式
末行模式下指令错误则返回指令模式
4. 指令模式(Command Mode)
指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。
0 -----光标移动至行首
0$ -----光标移动至行尾
h -----光标左移一格
l -----光标右移一格
j -----光标下移一行
k -----光标上移一行
$+A-----将光标移动到该行最后
PageDn -----向下移动一页
PageUp -----向上移动一页
d+方向键-----删除文字
dd -----删除整行
yy -----整行复制
p -----粘贴
r -----修改光标所在的字符
x -----删除光标所在的字符
ZZ -----保存退出
u -----撤销
5. 文本输入模式(Input Mode)
在指令模式下(CommandMode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。
a -----在光标后开始插入
A -----在行尾开始插入
i -----从光标所在位置前面开始插入
I -----从光标所在列的第一个非空白字元前面开始插入
o -----在光标所在列下新增一列并进入输入模式
O -----在光标所在列上方新增一列并进入输入模式
ESC -----返回命令行模式
助记:
iiiiii|aaaaaaa -----|表示光标所在位置
IIIIIIIIline|AAAAAAA -----line|表示光标所在行
OOOOOOOOOO
line| -----line|表示光标所在行
oooooooooo
6. 末行模式(Last line Mode)
末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下
:q -----结束Vi程序,如果文件有过修改,先保存文件
:q!-----强制退出Vi程序
:wq -----保存修改并退出程序
:set nu -----设置行号
:w -----保存文件
/string -----从光标开始处向文件尾搜索string,N:在反方向上重复上一次搜索命令
或?string -----从光标开始处向文件尾搜索string,n下一个?前一个
对应?和/搜索都有:n原来方向下一个,N:在反方向上重复上一次搜索命令
:n,$s/string1/string2/g -----替换第 n 行开始到最后一行中每一行所有string1 为string2,n 为数字,若 n 为 .,表示从当前行开始到最后一行
一个很好的练习例子
1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录;
2. 进入 vitest这个目录当中;
3. 将 /etc/passwd 拷贝到本目录底下;
4. 使用 vi 开启本目录下的passwd这个档案;
5. 在 vi 中设定一下行号;
6. 移动到第10行,向右移动 10 个字符,请问您看到什么目录?
7. 移动到第一行,并且向下搜寻一下user 这个字符串,请问他在第几行?
8. 接着下来,我要将 5到 20 行之间的 /bin 改为 /usr/bin ,并且一个一个挑选是否需要修改,如何下达指令?
9. 修改完之后,突然反悔了,要全部复原,有哪些方法?
10.我要复制 5到 15行这十行的内容,并且贴到最后一行之后;
11.删除 11 到 30 行之间的 10 行;
12.将这个文件另存成一个名为 passwd.new的文件;
13.去到第7 行,并且删除 15 个字符;
14.请问目前的文件有多少行与多少字符?
15.储存后离开吧!
整个的步骤可以如下所示:
1. mkdir /tmp/vitest
2. cd /tmp/vitest
3. cp /etc/passwd .
4. vi /tmp/vitest/passwd
5. : set nu
6. 先按下 10G ,再按下 30 + 向右键,会看到“/bin/sh”
7. 先按下 1G ,然后按下 /user 搜寻,会看到他在第 31 行!
8.:5,20s#/bin#/usr/bin#gc
9. (1)简单的方法可以一直按 u 回复到原始状态,(2)使用不储存离开 :q!之后,再重新读取一次该档案
10.5G 然后在 10yy 之后按下 G 到最后一行,再给他 p 贴上十行!
11.11G 之后,再给他10dd 即可删除 10 行了;
12.:w passwd.new
13.7G 之后,再给他 15x 即可删除 15 个字符;
14.:w保存之后会显示
15.:wq!