Linux下使用objdump

Linux下使用objdump
Linux下使用objdump

Linux下使用objdump+vim+xxd进行反汇编并修改指令

2012-08-27 23:23:46| 分类:Linux相关|举报|字号订阅

前段时间花了一个星期时间马马虎虎算是对汇编入了门吧(好吧,其它我还是什么都不懂),最近又开始对汇编有点兴趣了,于是想试下反汇编的感觉并尝试自己修改下指令

据说对一个程序反汇编后再修改的方法是以十六进制的方式打开程序,然后再通过一些工具找到相关的位置再用相关工具计算出偏移量等然后再做修改,不过我从来没搞过反汇编,对汇编也是一知半解的样子,所以就没那么专业了,至于能不能直接使用汇编的助记符修改我还不知道,估计应该是有这样的工具吧,不过我没搜索过,所以只尝试下十六进制下以汇编指令的十六进制形式进行修改了,如果有那样的修改方法我希望你能够告诉我,谢谢

在linux下反汇编我们可以使用gdb这个调试器也可以使用objdump这个工具,当然还有其它工具,不过这里我就不说了,然后用十六进制打开文件我们可以使用xxd,我们通过在vim内部调用xxd来对文件进行十六进制模式下修改,当然还有其它的十六进制编辑器,这里我也就不说了,因为我也就是玩玩,毕竟最近还在学习Win32 API(我真蛋疼),下面就从一个简单的程序开始吧

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

大家先看这个程序,很简单,一个主函数,还有一个jmp函数,正常情况下在编译链接后执行是不可能调用到jmp函数的,但我们要做的就是通过反汇编然后修改指令,让该程序在执行完主函数里的printf函数之后跳转到我们jmp函数的首地址以执行jmp函数

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

没有采用一些特殊的见不得人的手段的话该程序运行后的效果是这样的

然后我们以二进制形式打开可执行程序文件,vim可以使用-b选项来用二进制形式打开文件vim -b jmp

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

可以看到是这个样子的,然后我们使用xxd以十六进制模式对该文件进行编译如上图中的那样

:%!xxd

%表示我们当前的文件,!表示我们要执行一个外部命令(程序)

现在我们反汇编下这个程序

objdump -S -M intel jmp

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

反汇编后的内容比较多,我们就需要看main函数和jmp函数就够了

现在我们可以看出main函数在调用完printf函数返回后(从这样可以看出是调用了puts),下一步的指令是mov eax,0x0,我们还是先看一下反汇编的程序以及相关参数吧

-S这个其实也可以使用-d,这样反汇编出来后会显示地址,十六进制指令,还有就是对应的汇编代码-M intel表示我们以intel语法反汇编,linux下默认的汇编语法格式是AT&T的,这个我不习惯(其实我不会),好了,我们再继续往下说吧

我们刚刚说到在主函数调用完printf函数返回后的下一条指令是给寄存器eax赋0值,具体什么作用就不研究了,我们只说下我们所关心的问题,那就是跳转问题,我们要让程序跳转到jmp 函数的地址处,所以我们要修改这条指令

现在我们先停下来说说我们的指令,我们要跳转到jmp,对应的汇编指令应该类似这样的

jmp short jmp

后面的那个jmp不是汇编指令,是一个函数名,当然是个在c语言中是一个合法的标记符,但在汇编语言中我们不要将标号设置成这样,这个指令经过汇编编译器编译后应该是类似这样

jmp 80483c4

这里的80483c4是0x080483c4也就是jmp函数的地址

所以我们已经知道了我们的指令是什么,但是怎么用十六进制进行表示呢?

我告诉你这条指令应该类似这样写

e9 d2 ff ff ff

e9是跳转jmp的机器码十六进制表示(这个应该是个段内跳转,而段外跳转应该是ff),后面的d2 ff ff ff表示偏移量,这个是怎么计算出来的呢?好吧首先我还是先说下我是怎么知道段内跳转的机器码十六进制表示为什么是e9吧,其实很简单........你丫不会自己先写一个jmp指令然后再反汇编啊(我特别邪恶- -),好了下面说下偏移量的问题

首先从反汇编的结果我们可以看出来我们应该向上跳转,所以跳转的偏移值是一个负数,而计算机内部表示有符号数的方法是采用补码,最高位表示符号位,1表示负,0表示正,正数的补码是这个数本身,负数和补码为最高位置1,其它位反转后再加1,那么我们可以从反汇编中的结果中先计算出我们要向上跳转多少

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

这个程序是用于计算跳转偏移量的,其中a表示我们要修改的指令的首地址加上指令自身所占的内存,b设为我们要跳转到的地址,这样就可以计算出偏移量了,然后我们知道我们是向上跳转的,所以要取得补码,这里我们减过后的数是一个正数,最高位是0所以我们直接对该数取反加1,这样最高位为1,其它位反转加1,刚好得到负数补码形式

通过计算之后我们得到的结果是0xd2ffffff

记住数据在内存中的存储顺序哦,所以我们最终的代码为e9 d2 ff ff ff

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

这是我们使用xxd打开后的十六进制形式,我们打开我们要修改的指令处,怎么找你应该看得出来吧,使用vim自身的查找功能,很简单的,然后我们就可以进行修改了,将我们的e9 d2 ff ff ff替换掉后面的b8 00 00 00 00(这个还是替换掉好,虽然我这里是先替换然后在后面将先前指令再补上去的,但是这是因为我们的程序后面有大量的nop指令,所以可以覆盖,但是如果没有的话那么如果我们直接在里面添加的话会导致程序一团乱,这个大家自己可以亲身体会下修改完成后我们再

:%!xxd -r

其它的命令和前面一样,-r参数表示我们修改完后回到上一层,也就是我们刚用二进制形式打开可执行文件的那种状况,当然现在已经是被我们修改过后的程序了,当然不要忘记保存,不保存也是瞎忙活了

现在我们再次执行一下程序看看效果

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

哈,你看,我们成功了,我们已经成功在执行完主函数第一个printf函数后将程序的流程跳转到jmp函数处执行了,我们通过黑暗手段让程序改变了原来的执行路线

Linux下使用objdump+vim+xxd进行反汇编并修改指令- 枯龙吟- 枯龙吟

下面我们再反汇编一下这个已经被我们修改过的文件看下,我们可以看出来我们在主函数中

调用printf函数指令后的指令正是一个跳转指令,我们可以看到它后面要跳到的地址,正确无误

好了,到这里就全部结束了,如果你有时间去折磨和研究你可以试试修改为其它的指令来达到不同的目的,甚至于搞一些破坏,破解什么的

linux vim使用快捷键超好

Linux上vi(vim)编辑器使用教程 vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。下面vps侦探整理一下vi的使用教程:包含vi的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等,算是一篇比较适合新手学习vi的教程。 vi有3个模式:插入模式、命令模式、低行模式。 插入模式:在此模式下可以输入字符,按ESC将回到命令模式。 命令模式:可以移动光标、删除字符等。 低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。 一、打开文件、保存、关闭文件(vi命令模式下使用) 1 2 3 4 5 6 vi filename //打开filename文件 :w //保存文件 :w https://www.360docs.net/doc/571040068.html, //保存至https://www.360docs.net/doc/571040068.html,文件 :q //退出编辑器,如果文件已修改请使用下面的命令:q! //退出编辑器,且不保存 :wq //退出编辑器,且保存文件 二、插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC 键可退出插入模式) 1 2 3 4 5 6 7 8 a //在当前光标位置的右边添加文本 i //在当前光标位置的左边添加文本 A //在当前行的末尾位置添加文本 I //在当前行的开始处添加文本(非空字符的行首) O //在当前行的上面新建一行 o //在当前行的下面新建一行 R //替换(覆盖)当前光标位置及后面的若干文本 J //合并光标所在行及下一行为一行(依然在命令模式) 三、移动光标(vi命令模式下使用) 1、使用上下左右方向键 2、命令模式下:h 向左、j 向下、k 向上、l 向右。 空格键向右、Backspace 向左、Enter 移动到下一行首、- 移动到上一行首。

操作系统实验报告 LINUX基本命令使用和VI编辑器

实验报告模板 实验名称Linux基本命令使用和vi编辑器学院 姓名学号班级 实验地点实验日期评分 指导老师同组其他成员 一、实验目的 掌握Linux一般命令格式。 2.掌握有关文件和目录操作的常用命令。 3.掌握进程操作的常用命令。 4.熟练使用man命令。 5.学习使用vi编辑器建立、编辑、显示及加工处理文本文件。 二、实验环境 VMware,RedHat Linux 三、实验内容 正确地登录和退出系统(logout或exit)。 2.熟悉date,cal,who,clear命令。 3.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。 4.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。 5.利用man显示date等命令的手册页。 6.显示系统中的进程信息。 7.进入和退出vi。 8.利用文本插入方式建立一个文件。 9.在新建的文本文件上移动光标位置。 10.对该文件执行删除、复原、修改、替换等操作。 四、实验结果(含程序、数据记录及分析和实验总结等) 1.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。

Clear之后 2.浏览文件系统: (1)运行pwd命令,确定当前工作目录。 (2)运行ls–l命令,理解各字段含义。 第一部分“-rw-r--r--”表示该文件的权限,即所有者权限为读和写,组用户和其他用户的权限为只读。第二部分“l”表示该文件是符号链接,第三第四部分所 有者和所有者所在的用户组,第五部分的数字表示文件的大小(以字节为单位),剩下的依次是文件创建月日时间和文件名。

Linux操作系统Vi文本编辑器试验报告

Vi 文本编辑器 1.实验目的 文本编辑器的原理和操作。1.了解vi文本编辑器的相关命令。了解vi 2.2.实验原理和实验设备 1.操作系统inuxL. 3.实验步骤 1.什么是vi文本编辑器? Vi是一个全屏幕文本编辑器 优点: 具有文本编辑所需的所有功能.1 适用于各种版本的Unix/Linux2.适用于各种类型的终端.3使用灵活快捷.4缺点: 界面不太好看1.按键命令太多2.2. 如何调用vi 在系统提示符后输入vi和想要编辑(或建立)的文件名(如:vi [path]filename),便可进入vi。如果只输入vi,而不带有文件名,也可以进入vi。然后先创建文件的内容,时,只需在退出命令后输入文件名即可。vi在退出进入vi之后,首先进入的就是编辑模式,进入编辑模式后vi等待编辑命令输入而不是文本输入,也就是说,这时输入的字母都将作为编辑命令来解释。.进入编辑模式后光标停在屏幕的第一行首位上(用_表示),其余各行的行首均有一个“~”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名及其状态。如果是[New File],则表示该文件是一个新建的文件。如果输入vi带有文件名后,文件已在系统中存在的话,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名,行数和字符数。在编辑模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被vi当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式,按ESC键即可。在编辑模式下,用户按“:”键即可进入命令模式,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完成后,vi自动回到编辑模式。如图3.1所示。若在命令模式下输入命令过程中改变了主意,可用退格键(backspace)将输入的命令全回到编辑模式。部删除之后,再按一下退格键,即可使vi3. vi 的三种基本工作模式: 。)编辑模式、插入模式和命令模式(末行模式 三种模式之间的转换示意图图3.1 vi文件的保存和退出;4. 键切换ESC要通过如果我们处于其它命令模式时,的默认模式,vim或vi模式是Command 过来。会在屏幕的最下方等待我们输入命令:号时,vi当我们按ESC键后,接着再输入:保存;:w ;filename另存为:w filename

Linux系统如何使用vi命令

Linux系统如何使用vi命令 linux系统使用vi命令方法 一、一般模式:删除、复制与粘贴类命令 x,x x为向后删除一个字符,x为先前删除一个字符 nx(n代表数字) 向后删除n个字符 dd 删除当前行 d 删除当前行所有字符,试成为空行 ndd(n代表数字) 删除光标所在行的向下n列 d1g 删除光标所在行到第一行的所有数据 dg 删除光标所在行到最后一行的所有数据 yy 复制光标所在行 y1g 复制光标所在行到第一行的所有数据 yg 复制光标所在行到最后一行的所有数据 ynj(n代表数字) 复制光标所在行向下n+1行 dnj(n代表数字) 删除光标所在行向下n+1行 p,p p为复制的数据粘贴在光标的下一行,p为复制的数据粘贴在光标的上一行 j 将光标所在行与下一行的数据结合成一行 u 恢复前一个动作(undo) 二、编辑模式命令 i,i i为在当前光标所在处插入输入的文字,i为在光标所

在行第一个非空字符插入输入的文字 a,a a为在当前光标所在处下一个字符插入输入的文字,a 为在光标所在行最后一个字符的下一个字符处插入输入的文字o,o o为在光标所在行的下一行行首开始插入字符,o为在光标所在行的上一行行首开始插入字符 r,r r为替换光标所在那一个字符,r为一直替换光标所指的文字,直到退出 esc 退出,回到一般模式 三、命令模式 h 光标向左移一个字符 j 光标向下移一个字符 k 光标向上移一个字符 l 光标向右移一个字符 ctrl+f 屏幕向下翻一页 ctrl+b 屏幕向上翻一页 ctrl+d 屏幕向下翻半页 ctrl+u 屏幕向上翻半页 + 光标移动到下一行的第一个非空字符 - 光标移动到当前行的第一个非空字符 n空格(n代表数字) 光标向当前行向右移动n个字符 0(数字0) 光标移动到当前行的第一个字符(可以为空字符,注意与-区分) $ 光标移动到当前行的最后一个字符(可以为空字符,注意与-区分)

linux_vi基础教程

The binary system

Linux_vi 1 简介 (4) 2 使用帮助 (4) 3 模式和命令 (4) 3.1 输入模式和命令模式 (4) 3.2 vi和ex命令 (5) 4 启动与编辑vi-vim (5) 4.1编辑一个文件 (5) 4.2编辑多个文件 (5) 5 系统意外时数据的恢复 (5) 6 搜索 (6) 6.1搜索常用命令 (6) 6.2查找字符串便捷方式 (6) 6.3 查找整个字符串 (6) 7 移动和跳转 (6) 7.1获取光标当前位置 (6) 7.2 缓冲区移动 (7) 7.3 光标移动 (7) 7.4 行号跳转 (8) 7.5 跳转到前一位置 (9) 7.6 使用名称标示任意行,进行跳转 (9) 8 插入 (9) 9 写入与退出 (10) 9.1 写入文件 (10) 9.2 退出文件、停止vi (10) 10 文本改动 (10) 10.1替换之vi命令 (10) 10.2替换之ex命令_常用方法 (10) 11 删除 (11) 11.1 删除命令 (11)

11.2 常用的删除组合命令 (12) 11.3 撤销或重复改变 (12) 11.4 恢复删除 (12) 11.5 复制上一次删除 (12) 12 复制 (13) 12.1 接出(复制单词、句子、段落) (13) 12.2 复制与移动行 (13) 13 使用缩写 (14) 14 shell命令 (14) 14.1 执行shell命令 (14) 14.2 使用shell命令处理数据 (14) 15 显示与设置选项 (14) 15.1 显示选项 (14) 15.2 设置选项 (15) 15.3常用设置命令 (15) 16 初始化文件与配置文件 (15) 16.1初始化文件 (15) 16.2配置文件 (15) 17 vi术语 (15) 18 在线资料 (16)

linux下vi命令大全

linux下vi命令大全 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前

I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write信息nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始mesg:允许vi显示其他用户用write写到自己终端上的信息 最后行方式命令 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下

linux下vi命令修改文件及保存等使用方法整理

vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人, 或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、 游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi,那您可能就没辄了。 vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode), 各模式的功能区分如下: 1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。 2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。 3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。 不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾

实验一 Linux下常用命令和Vi的使用

实验一Linux下常用命令和Vi的使用 实验学时:2学时 实验类型:验证型 一、实验目的 了解UNIX/LINUX运行环境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握 UNIX/LINUX下c语言程序的编写、编译、调试和运行方法。 二、实验内容 ●熟悉LINUX的常用基本命令如ls、who、pwd、ps等。 ●练习LINUX的文本行编辑器vi的使用方法 ●联机帮助命令-man的使用。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验步骤: 1.用pwd显示当前工作目录名:pwd;如果当前目录不是root,需改变到root目录: cd/root。 2.用mkdir建立四个目录:mkdir /root/test1;mkdir /root/test2;mkdir /root/test2/abcd;mkdir /mypro。 3.用cd命令从root开始依次进入test1、test2、abcd、mypro目录,并用 pwd验 证。 cd test1; pwd cd ../test2;pwd cd abcd;pwd cd ../../mypro;pwd 4.用cd 命令从mypro目录返回到根目录,并用pwd命令验证。 cd / pwd 5.用rmdir命令删除子目录 abcd。 Rmdir /root/test2/abcd 6.分别用ls ls –a 和ls-l查看root目录的内容。 ls ls –a ls -l 7.man 命令: (按PageUp键向上翻页PageDown向下翻页,按q退出) man ls 查看ls的帮助信息。 man cp 查看cp的帮助信息。 man mkdir 查看mkdir的帮助信息。 man rm>rm_help 用重定向生成帮助文档

linux下VI编辑器命令大全(超级完整版)

NOTICE:把这里提到的命令牢记心间,行走LINUX才能轻松自如! 这是基本功,练就此身本领后,方可学习上乘功夫…… 如若不按此步骤修练,结果会经脉尽断,真气逆行,哈哈哈! XP 交换两个字符位置 ddp 上下两行调换 J 上下两行合并 dG 删除所有行 d$ 从当前位置删除到行尾 y$ 从当前位置复制到行尾, 如果要粘贴到其他地方 p 就可以了 :ab string strings 例如 ":ab usa United States of America" , 当你在文见里插入 usa 时 United States of America 就蹦出来了 :g/^/m0 把文件内容反转 :map keys new_seq 定义你当前键盘命令 :set [all] vi or ex 的编辑状态 如显示每行 :set nu :X 然后系统会提示输入密码, 输入密码后存盘退出, 保存后就加密了 下次编辑时使用vi -x filename, 系统会提示你输入密码 在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,粘贴下来在光标处。 我常用到的单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S :%s/old_Word/new_word/g 这个指令是于在整个文件中替换特定字符串 将光标移到第n行,按下 mk 将光标移到第m行,按下 "ay'k 即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等

不好意思,补充一下,想粘贴到某处,直接将光标移到某地,按下‘ap 即可 删除命令操作 d l 删除当前字符(与x命令功能相同) d 0 删除到某一行的开始位置 d ^ 删除到某一行的第一个字符位置(不包括空格或TA B字符) d w 删除到某个单词的结尾位置 d 3 w 删除到第三个单词的结尾位置 d b 删除到某个单词的开始位置 d W 删除到某个以空格作为分隔符的单词的结尾位置 d B 删除到某个以空格作为分隔符的单词的开始位置 删除命令操作 d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置 d)删除到某个语句的结尾位置 d 4)删除到第四个语句的结尾位置 d(删除到某个语句的开始位置 d } 删除到某个段落的结尾位置 d { 删除到某个段落的开始位置 d 7 { 删除到当前段落起始位置之前的第7个段落位置 d d 删除当前行 d /t e x t 删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的 位置(但不包括该字样)之间的内容 d fc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容 d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容 D 删除到某一行的结尾 d $ 删除到某一行的结尾 5 d d 删除从当前行所开始的5行内容 d L 删除直到屏幕上最后一行的内容 d H 删除直到屏幕上第一行的内容 d G 删除直到工作缓存区结尾的内容 d 1 G 删除直到工作缓存区开始的内容 修改命令操作 c l 更改当前字符 c w 修改到某个单词的结尾位置 c 3 w 修改到第三个单词的结尾位置 c b 修改到某个单词的开始位置 c W 修改到某个以空格作为分隔符的单词的结尾位置 c B 修改到某个以空格作为分隔符的单词的开始位置 c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置 c 0 修改到某行的结尾位置

linux下vi编辑器的操作使用方法.

3. 移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 按「ctrl」+「b」:屏幕往“后”移动一页。 按「ctrl」+「f」:屏幕往“前”移动一页。 按「ctrl」+「u」:屏幕往“后”移动半页。 按「ctrl」+「d」:屏幕往“前”移动半页。 按数字「0」:移到文章的开头。 按「G」:移动到文章的最后。 按「$」:移动到光标所在行的“行尾”。 按「^」:移动到光标所在行的“行首” 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头 按「#l」:光标移到该行的第#个位置,如:5l,56l。 4. 删除文字 「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。

「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 「dd」:删除光标所在行。 「#dd」:从光标所在行开始删除#行 5. 复制 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。 「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 6. 替换 「r」:替换光标所在处的字符。 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。 7. 回复上一次操作 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。 8. 更改 「cw」:更改光标所在处的字到字尾处 「c#w」:例如,「c3w」表示更改3个字

linux环境下vi命令编辑器详解(fedoraubuntu)

Linux环境下vi命令编辑器详解(FedoraUbuntu...) Linux环境下vi命令编辑器详解(Fedora/Ubuntu/.../) 2008-12-19 16:43 一、Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括ex, edit,ed 和vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别是某些终端用户的需要。值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象DOS下的编辑器如edit那么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换的方法,但这只是习惯的问题,一旦你熟练的使用上了vi你就会觉得它其实也很好用。 虽然Vi采用了状态切换的方法,但电脑的硬件及操

作系统多种多样,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在Unix 系统上也一样,几乎各大电脑厂商都有自己的Unix 系统,而vi 的操作方法也会随之有点出入。这里我们采用PC 的键盘来说明vi 的操作,但在具体的环境中还要参考相应的资料,这一点是值得注意的。二、Vi入门(一)、进入vi 在系统提示字符(如$、#)下敲入vi <档案名称>,vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入vi 后萤幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。(二)、两种模式 如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入a,vi 即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统如发出哔哔声就表示已处于指令模式下了。

Linux系统中vi编辑器常用命令

Linux系统Ubuntu中的Vi编辑器常用命令vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi,那您可能就没辄了。 vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Commandmode)、插入模式(Insertmode)和底线命令模式(Lastlinemode), 各模式的功能区分如下: :控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insertmode下,或者到Lastlinemode。 :唯有在Insertmode下,才可做文字数据输入,按Esc等可回到Comandmode。 :将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。

不过可以把vi简化成两个模式,即是将Lastlinemode也算入Commandmode,把vi分成Command和Insertmode。 进入vi的命令: vifilename:打开或新建文件,并将光标置于第一行首 vi+nfilename:打开文件,并将光标置于第n行首 vi+filename:打开文件,并将光标置于最后一行首 vi+/patternfilename:打开文件,并将光标置于第一个与pattern匹配的串处 vi-rfilename:在上次正用vi编辑时发生系统崩溃,恢复filename vifilename....filename:打开多个文件,依次进行编辑 移动光标类命令 h:光标左移一个字符 l:光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n:光标下移一行

Linux下Vi编辑器的使用介绍

Vi编辑器是所有Unix及Linux系统下标准的编辑器。对Unix及Linux系统的任何版本,vi 编辑器是完全相同的。 基本上vi可以分为三种状态,分别是命令模式(commandmode)、插入模式(insert mode)和底行模式(last line mode),各模式的功能为: 命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入insert mode 下,或者到last line mode. 插入模式:只有在insert mode下,才可以做文字输入,按”Esc”键可回到命令行模式。 底行模式:将文件保持或退出vi,也可以设置编辑环境,如寻找字符串、列出行号…等。 打开Terminal,指定到某个目录下,输入vi testVi,即要用vi打开的文件名为testVi,若在此目录下没有此文件,则将会自动创建一个空的testVi文件,此时将进入vi全屏幕编辑画面(注:每行前显示波浪符号的表示该行为空行)。刚进入vi之后,是处于“命令模式”,要切换到“插入模式”才能够输入文字。 由命令模式进入到插入模式编辑文件:在“命令模式”下按一下小写字母”i”、”a”、”o”均可以进入“插入模式”,这时候就可以开始输入文字了。 由插入模式或底行模式进入到命令模式:按”Esc”键。 由命令模式进入到底行模式:按”:”键。 由底行模式进入到插入模式:按一下小写字母”i”、”a”、”o”均可以进入“插入模式”。 退出vi及保存文件:在底行模式下,输入: (1)、w testVi1 (将testVi修改后的文件保存为testVi1,此时testVi中的内容仍为原始内容,testVi没有作任何修改); (2)、wq (保存修改后的testVi文件并退出vi); (3)、q!(或q) (不保存修改后的testVi文件退出vi,此时testVi文件的内容仍为打开前的原始文件)。 由命令模式进入插入模式时: (1)、按”i”键,是从光标当前位置开始输入文字; (2)、按”a”键,是从目前光标所在位置的下一个位置开始输入文字; (3)、按”o”键,在目前光标的下一行插入新的一行,从行首开始输入文字。 命令模式下移动光标:

Linux基本命令及vim的使用

Linux基础实验 Linux常用命令的使用 【实验内容】 本课程要求学员对Linux基本操作命令有一定了解和掌握。下面列出的一些常用命令作为参考。最好针对每一个都能亲自练习、掌握。 【实验平台】 PC机 注意: 打开终端:ctrl+atl+t 命令、参数通过空格分开 Tab 补全命令和参数 ---------------------------------------------------------------------- 1.pwd 命令 pwd 显示当前目录的绝对地址 ---------------------------------------------------------------------- 2.ls 命令 ls 以默认方式显示当前目录文件列表 ls –a 显示所有文件包括隐藏文件

ls –l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ---------------------------------------------------------------------- 3.cd 命令 cd dir 切换到当前目录下的dir目录 cd .. 返回到上一级目录 cd ~ 切换到用户主目录,farsight用户的主目录(/home/farisht),root用户的主目录(/root) 尝试cd –、cd 空格、cd +相对路径、cd+绝对路径 ---------------------------------------------------------------------- 4.cp命令 拷贝文件或拷贝目录,拷贝目录使用参数(-r) cp source target 将source 拷贝到target 尝试拷贝1.c文件到farsight用户主目录 ---------------------------------------------------------------------- 5.mv命令 移动文件或目录,修改文件名或目录 mv source target 将source移动到target ---------------------------------------------------------------------- 6.mkdir 命令 mkdir file 当前目录下创建file目录

操作系统实验答案-实验2Linux的基本操作及vi的使用(答案)

实验二Linux得基本命令操作及vi得使用 实验目得: 1、熟悉Linux操作系统环境 2、熟悉Linux操作系统得文件结构 3、熟悉Linux操作系统得基本命令 4、熟悉Linux操作系统得文件组织方式 5、学习使用vi编辑器建立、编辑、显示以及加工处理文本文件。 实验内容及要求: 1、登陆实验室得Linux服务器。 启动电脑,进入Windows操作系统,在“开始"-〉“运行”中输入 “Telnet 10、200、41、178”,即可登陆实验室得Linux服务器。在“Logi n:”提示后输入“stu”+学号(如02号同学输入stu02),按下回车键。在“Password:”提示后输入“123”(注意输入密码时屏幕上不会有“*”等符号出现,这与Windows不同),按下回车键,若出现“[os root os]$"或“-bash-2、05b$”,表示已成功登陆系统,可以开始输入指令操作。 思考: (用pwd指令)查瞧自己登陆后位于Linux得哪个目录,写出该目录得路径,与自己周围得同学比较,瞧就是否相同。(可查阅Linux资料了解“/home"目录得功能介绍) 2、在Linux中进行以下基本操作: 1)在当前目录下新建一个名为(自己姓名首字母缩写+学号后3位数)得子目录.写出您所用得指令。(例如:mkdirzq000 )

2)进入刚创建得子目录环境下。(提示:指令cd) 3)在刚创建得子目录下新建一个名为abc、txt得文件。写出您所用得指令。 (提示:新建文件得指令就是touch)

4)将/目录下(即根目录下)得wele、txt文件复制到自己得子目录下,写出您所用得指令。 cp –i/root/stu62/abc、txt/home/wele、txt 5)写出wele、txt文件得内容。(提示:用cat指令查瞧) Hello,Boysand girls ,wele tothe wonderful Linux world! 3、在Linux中进行以下基本操作: 1)进入自己得主目录。写出您使用得指令. 2)运行指令:

Linux系统编程实验一:Linux常见命令及VI的使用

实验一:Linux常见命令及VI的使用 ●实验目的: 学会使用Linux的常见命令 学会用vi编辑器 ●实验要求: 熟练使用该节所介绍的Linux命令 熟练使用该节所介绍的vi创建、编辑、保存文件 ●实验器材: 软件:安装了Linux的vmware虚拟机 硬件:PC机一台 ●实验步骤: (一)常见命令的使用 1. useradd命令 useradd用于添加用户,用法:useradd [选项] 用户名 例:使用useradd命令添加smb用户 #useradd smb 添加名字为smb的普通用户,创建之后在/home目录下多了smb文件夹,这就是smb这个用户的主目录。 2. passwd命令 passwd命令用于设置账户密码,用法:passwd [选项] 用户名 例:使用passwd命令设置smb账户密码 #passwd smb 3. su命令 su命令用于切换用户,用法:su [选项] [用户名] 例:使用su命令切换到root用户 $su – root

4. shutdown命令 shutdown命令用于关机,用法:shutdown [-t sec] [-arkhncfFHP] time [warning message] 例:使用shutdown命令立刻关机 #shutdown now 5. cp命令 cp命令用于拷贝,用法:cp [选项] 源文件或目录目标文件或目录 例:使用cp命令将/home目录下的test文件拷贝到/tmp目录下 #cp /home/test /tmp/ 例:使用cp命令将/home目录下的dir1目录拷贝到/tmp目录下。 #cp –r /home/dir1 /tmp/ 6. mv命令 mv命令用于移动或更名,用法:mv [选项] 源文件或目录目标文件或目录 例:使用mv命令将/home目录下的test文件更名为test1 #mv /home/test /home/test1 例:使用mv命令将/home目录下dir1目录移动(剪切)/tmp目录下 #mv /home/dir1 /tmp/

Linux中vi编辑器的基本使用方法

Vi编辑器的基本使用方法! 1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 1) 命令行模式command mode) 区段及进入Insert mode下,或者到last line mode。 2) 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 3) 底行模式(last line mode) 将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式(command mode)。 2、vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert

mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧! b) 切换至插入模式(Insert mode)编辑文件 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode),这时候你就可以开始输入文字了。 c) Insert 的切换 您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。 d) 退出vi及保存文件 在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如: : w filename (输入「w filename」将文章以指定的文件名filename保存) : wq (输入「wq」,存盘并退出vi) : q! (输入q!,不存盘强制退出vi) 3、命令行模式(command mode)功能键 1). 插入模式 按「i」切换进入插入模式「insert mode」,按“i”进入

linux下vi的基本操作

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi的基本概念 基本上vi可以分为三种状态,分别是 命令模式(command mode) 插入模式(Insert mode) 底行模式(last line mode) 1) 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode。 2) 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按[ESC]键可回到命令行模式。 3) 底行模式(last line mode) 将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。 2、vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于[命令行模式(command mode)],您要切换到[插入模式(Insert mode)]才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到[插入模式(Insert mode)]再说吧! b) 切换至插入模式(Insert mode)编辑文件 在[命令行模式(command mode)]下按一下字母i就可以进入[插入模式(Insert mode)],这时候你就可以开始输入文字了。 c) Insert 的切换 您目前处于[插入模式(Insert mode)],您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下[ESC]键转到[命令行模式(command mode)]再删除文字。 d) 退出vi及保存文件 命令行模式下保存并退出:输入ZZ 在[命令行模式(command mode)]下,按一下[:]冒号键进入[Last line mode],例如:: w filename (输入[w filename]将文章以指定的文件名filename保存) : wq (输入[wq],存盘并退出vi)

Linux常用Shell命令及Vi的使用

常用Shell命令及Vi的使用 1.Vi 全屏幕编辑器的使用 2.grep 找出满足条件的行 3.cut 摘取指定的列 4.sort 对文件按指定的关键字段排序 5.uniq 删除文件中重复的行 6.wc 对文件进行字符数、单词数、行数统计 7.diff 比较两个文件的不同之处 8.who/w 列出当前登录在线用户的详细情况 vi全屏幕编辑器的使用 ?vi的特点、及几个基本概念 ?vi的三种模式,及之间的切换 ?光标移动指令 ?删除指令 ?复制、粘贴指令 ?查找及替换指令 ?其他指令 vi简介 Vi是“Visual”的意思,几乎所有的UNIX系统都提供这个程序。它是一种全屏幕编辑程序。这里的屏幕是文本对外显示的窗口,在这个窗口内,用户可以自由地移动光标,对文本中的字符、字、行、段进行插入、删除和修改等操作,并通过上下移动窗口,对文件的全部内容进行操作。 vi的特点、及几个基本概念 1.由行编辑器发展而来 2.双手不必离开键盘就可完成所有操作 3.不依赖于鼠标和功能键(home/end/pageup/pagedown/...) 4.在命令模式下,所有的输入都当作命令看待 5.在文本输入模式下,所有的输入都当作文本 vi的三种模式,及模式间切换

?命令模式到文本模式切换:i a o I A O i (insert) 在光标所在位置插入(当前字符前) a (append)在光标所在位置后插入(当前字符后) I 在当前行首插入A在当前行尾插入 o (open) 在光标所在当前行的下面插入新行 O 在光标所在当前行的上面加入新行 扩展命令模式(长命令模式) 在命令模式下输入:,在屏幕下方出现:提示符,等待用户输入其他指令。?vi的启动 在shell命令状态下输入 vi filename(打开现有文件,或编辑新文件) vi ?vi的退出 在扩展命令模式下输入 :wq 文件存盘退出 :q! 不存盘强制退出 :wq newfilename 存为新文件newfilename 光标移动指令 ?对应方向键移动 h 左移一字符k 上移一行j 下移一行l 右移一字符 ?按单词单位移动 b 移到词首 e 移到词尾w 移到下一词首 ?按行单位移动 0 移到行首$ 移到行尾

相关文档
最新文档