使用Vi和Vim编译文本

开始使用vi          vi /tmp/test

添加文本             当完成文本输入,按ESC退出编辑当输入一个:进入ex模式,需要输入两次ESC;a添加命令,A在命令结束处添加,i插入命令(光标左边),I在命令开始前,o当前行之下开新行,O当前行上开新行。

在文本中移动

删除、复制和更改文本   d<?>删除一些文本,c<?>更改一些文本,y<?>复制一些文本。dw删除(d)当前光标位置之后的一个单词(w)。db删除当前光标位置之前的一个单词。dd删除整个当前行。c$更改从当前字符开始到当前行末尾的字符,并进入输入模式。c0更改从前一个字符到当前行开头的字符,并进入输入模式。cl删除当前字母,并进入输入模式。cc删除当前行,并进入输入模式。yy将当前行复制到缓冲区。y)将光标右边的当前句子复制到缓冲区。y}将光标右边的当前段落复制到缓冲区。3dd从当前行开始删除三行。3dw删除接下来的三个单词。5cl更改接下来的5个字母。12j向下移动12行。5cw删除接下来的5个单词。4y)复制接下来的4个句子。

粘贴文本 P将文本放置到左边,或上一行。p右边。或下一行。

重复命令 句点(.),eg:将光标移动名称joe的开头,然后输入cw和Jim,从而将Joe改为Jim,随后在文件中搜索Joe的下一次出现,如果找到,将光标置于该名称的开头,并单击一个句点。此时Joe改为Jim。

退出vi, ZZ将当前更改保存到文件,并退出vi。:w保存当前文件,但不退出vi。:wq工作过程与ZZ命令相同。:q退出当前文件,但只有在没有未保存的更改内容时该命令起作用。:q!退出当前文件,但不保存对文件所做的更改。Esc返回命令模式。u单击u撤销前一次所做的更改。Ctrl+R撤销先前的撤销命令。:!command,运行shell命令。Ctrl+G显示该文件名。

在文件中跳过  ctrl+f向前翻页,Ctrl+b向后翻页,Ctrl+d 一次向前翻半页。Ctrl+u向后翻半页。G转到文件的最后一行。1G转到第一行。35G转到任意行号。

搜索文本  若想要搜索文件中某一文本的下一次或者上一次,可以使用反斜杠(/)或者问号(?),/hello向前搜索单词,?goog向后搜索,/The.*foot向前搜索包含单词The并在此之后又包含单词foot的行。?[pP]rint,向后搜索print或Print。

使用ex模式   :g/Local 搜索单词Local,并打印文件中每次出现该单词的所在行。:s/Local/Remote将当前行中首次出现的单词Local替换为Remote。 :g/Local/s//Remote将文件每一行中首次出现的单词Local替换为Remote。:/Local/s/Remote/g将文件中所有出现的单词Local替换为Remote。:g/Local/s//Remote/gp将文件中所以出现的单词Local替换为Remote,然后打印每一行。

查找文件

使用Local命令根据名称查找文件                相对于find命令,locate命令查找文件的速度更快,因它只搜索的是一个数据库而不是整个文件系统,locate命令无法查找自上一次数据库创建以来新添加到系统中的任何文件。而且并不是所有的文件都存储在数据库,通过选择挂载类型、文件类型、文件系统类型以及挂载点就不会   存入数据库。locate -i不论大小写都会发现。find使用-name选项查找文件名。

find命令,搜索文件系统。作为普通用户使用find命令无法找到root用户读取的文件,而且将会产生错误命令,在命令行末尾加入以下代码  2>/dev/null,将标准错误定向到/dev/null。find -ls打印一个与每一个文件相关的长清单。

根据文件名查找文件 -name  -iname,eg:find /etc -name passwd;find /etc -iname ‘*passwd*'

根据大小查找文件    eg:find /usr/share/ -size +10M   find /mostlybig -size -1M  find /bigdata -size +500M -size -5G -exex du -sh {} \;

根据用户查找文件  搜索特定的所有者(-user)或组(group),通过使用not和-or,可以优化对于特定用户和组相关联文件的搜索。 eg:find /home -user chris -ls   find /home -user chris -or user joe -ls   find /home -not -user root -ls

根据权限查找文件 是一种找到系统文件中安全问题或者发现访问问题的极好方法。当在chmod命令中使用数字或者字母更改文件权限之后,可以在find命令中使用-perm选项,从而根据数字或者字母找到文件。eg:find /bin -perm 755 -ls

根据日期和时间查找文件  搜索一定天数或分钟数内容或者元数据。  time(-atime、-ctime、-mtime)和min(-amin、-cmin、-mmin),eg:find /etc/ -mmin -10(十分钟内被更改的文件),find /bin -ctime -3(三天内是否),find /var -atime +300(300多天)

在查找文件时使用not和or   find /var -user joe -not -group joe -ls(搜索被用户joe所拥有却没有被分配给组joe的文件)。

查找文件和执行命令  find命令中的其中一个最强大的功能是能够找到任何文件上执行命令。通过-exec选项可以在每一个找到的文件上执行命令。使用-ok选项则会在每个匹配的文件上停留,并询问是否想要在文件上执行命令。eg:find [options] -exec command {} \;(\和;都是比加的,一组{}表示find查找出的文件名);find /usr -size +5M -exec du{} \; |sort -nr (du列出文件的大小)  find /var -user joe -ok mv {} /tmp/joe/ \;

使用grep命令在文件中搜索  grep搜索单个文件或者递归搜索整个目录结构。-i区分带小写,-v查找不包含所指定文本字符串的行,-r递归搜索。为便于在每行中突出显示文本root,可以添加--color选项(eg:grep -ri --color root/etc/sysconfig)

要在命令的输出中搜索某一文本,可将该输出发送到grep命令,eg:ip addr show |grep inet(使用ip命令输出了包括字符串inet的IP地址)