菜鸟笔记
提升您的技术认知

Linux常用命令--文件编辑与查看

目录

vi

命令模式与编辑模式

命令模式

编辑模式

cat

tac

more

less

head

tail

vi

命令用途:vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。 vi编辑器支持命令模式和编辑模式,要正确使用vi编辑器就必须熟练掌握这两种模式的切换。  

命令语法:vi [文件名]

命令模式与编辑模式

命令模式:在shell提示符后输入vi命令,会自动进入命令模式。此时,从键盘上输入的任何字符都会被当作命令来解释。

编辑模式:在vi命令模式下,输入插入命令(a、i、o)或替换命令(r)可以从命令模式进入编辑模式。在编辑模式下,从键盘上输入的所有字符都会被当做该文件的正文内容。

命令模式

在vi命令模式下,提供了许多非常实用的辅助命令,可以帮助我们更加方便的对文件进行编辑,例如:设置行号、跳转到指定行、移动到行首或行尾和撤销操作等。

命令 作用
:set nu 设置行号
:set nonu 取消行号
gg 跳转至第一行
G 跳转至最后一行
nG 跳转至第n行
:n 跳转至第n行
$ 移动到光标所在行的行尾
0 移动到光标所在行的行首
u 撤销上一步的操作

如何删除?

命令 作用
x 删除光标所在处的字符
nx 从光标所在处的字符开始, 连续删除n个字符
dd 删除光标所在行
ndd 从光标所在行开始,连续删除n行
dG 删除光标所在行直到文件末尾的内容
D 删除光标所在处到行尾的内容
:n1,n2d 删除第n1行到第n2行的内容

如何复制和剪切?

命令 作用
yy 复制当前行
nyy 从当前行开始,连续复制n行
dd 剪切当前行
ndd 从当前行开始,连续剪切n行
p(小写) 粘贴到当前行上面
P (大写) 粘贴到当前行下面

如何搜索和替换?

命令 作用
/[匹配条件] 搜索指定字符串
n 查看下一个搜索到的匹配结果
:%s/old/new/g 全文替换指定字符串
:n1,n2s/old/new/g 在第n1行到第n2行范围内替换指定字符串
:n1,n2s/^/#/g 为从第n1行到第n2行的各行行首增加#注释
:n1,n2s/^#//g 将从第n1行到第n2行的各行行首的#注释去掉
:n1,n2s/^/\/\//g 为从第n1行到第n2行的各行行首增加//注释
//为从第97行到第102行的各行行首增加#注释
:97,102s/^/#/g
//将从第97行到第102行的各行行首的#注释去掉
:97,102s/^#//g

如何保存和退出?

命令 作用
:w 保存修改
:w [另存为文件名] 另存为指定文件
:wq 保存修改并退出
ZZ 保存修改并退出
:q! 不保存修改退出
:wq! 强制保存修改并退出(对文件不具有写权限时,文件所有者及root可以使用)

导入内容、定义快捷键、起别名

命令 作用
:r ![命令] 将命令的执行结果导入到当前行下面
:map [快捷键] [命令组合] 定义快捷键(Ctrl+V+快捷键或Ctrl+V、Ctrl+快捷键)
:ab [别名] [原内容] 为指定内容起别名
//为I#<ESC>操作(在当前行的行首增加#注释)创建快捷键Ctrl+p
:map ^P I#<ESC>
//为0x操作(删除当前行行首的第一个字符)创建快捷键Ctrl+b
:map ^D 0x
//为邮箱pengjunlee@163.com字符串起别名为email 
:ab email pengjunlee@163.com

注:在vi命令模式下设置的别名和快捷键仅对本次编辑有效,若需要将别名或快捷键永久存储需在当前用户家目录中的.vimrc文件中进行配置。

编辑模式

在vi命令模式下,输入插入命令或替换命令可以从命令模式进入编辑模式。

常用的vi插入命令及其作用如下表。

命令 作用
a 在光标所在字符的后面插入内容
A 在光标所在行的行尾插入内容
i 在光标所在字符的前面插入内容
I 在光标所在行的行首插入内容
o 在光标所在行的下面插入新行
O 在光标所在行的上面插入新行

常用的vi替换命令及其作用如下表。

命令 作用
r 替换光标所在处字符
R 从光标所在处开始替换字符,按ESC结束替换

 

cat

命令用途:cat命令用来显示文件的内容。当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

命令语法:cat [-选项] [文件名]

常用选项:

-n:显示行号;

-b:和-n相似,只不过对于空白行不编号;

-s:当遇到有连续两行以上的空白行,就代换为一行的空白行; 

//显示当前目录下的NOTICE.txt文件的内容,并显示行号
cat -n ./NOTICE.txt 

tac

命令用途:逆序显示文件内容。

命令语法:tac [文件名] 

//逆序显示当前目录下的NOTICE.txt文件的内容
tac NOTICE.txt 

more

命令用途:分页显示文件内容。

命令语法:more [文件名]

操作方法:

空格键或f    向下翻页

Enter键      向下换行

q或Q         退出 

//分页显示etc目录下的services文件的内容
more /etc/services 

less

命令用途:和more相似,less命令也用来分页显示文件内容。

命令语法:less [文件名]

操作方法:

空格键或f、PageDown键         向下翻页

PageUp键                      向上翻页

Enter键、↓键                 向下换行

↑键                          向上换行

q或Q                          退出

常用选项:

-N:显示行号;  

//分页显示etc目录下的services文件,并显示行号。
less -N /etc/services 

注:在使用less命令来分页查看文件内容时,在浏览过程中输入"/要搜索的关键字"后按Enter,可以将搜索到的关键字高亮显示,使用"n"查看下一个搜索到的结果。  

head

命令用途:显示文件的前几行。

命令语法:head [-选项][文件名]

常用选项:

-n:指定要显示的行数,若不指定默认显示10行; 

//显示etc目录下的services文件的前20行。
head -n 20 /etc/services

tail

命令用途:显示文件末尾几行。

命令语法:tail [-选项][文件名]

常用选项:

-n:指定要显示的行数,若不指定默认显示10行;

-f:动态显示文件末尾内容; 

//动态显示catalina.out日志文件的末尾20行。
tail -fn 20 /tomcat/catalina/logs/catalina.out