购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 文件查看与编辑

在阅读与编辑文件时,我们总会选择几个常用的工具。本节介绍的是 Linux 平台上常用的几个阅读与编辑文档的工具。

3.3.1 文件查看:cat、tac、nl

cat、tac、nl命令都可以将文件内容一次性输出到屏幕上。cat命令一般用来查看文件,合并文件;tac命令是将cat命令倒过来查看,甚至可以将字符颠倒;nl命令相当于“cat-n”,但是不止于此,还可以用作空位补零。

1.cat命令速查手册

cat是concatenate的缩写,它的主要功能是一次性将所有内容输出到屏幕上,一般在文件内容较少时使用。

(1)cat命令的语法格式:cat[选项][文件]。

(2)cat命令的选项说明如表3.3所示。

表3.3 cat命令的选项说明

(3)cat命令示例。

2.cat命令编辑文件小技巧

cat命令不仅可以用来查看文件内容,还可以用来编辑简短的内容,并将其输入文件中。

(1)将内容追加到文件末尾。

(2)编辑内容,将其追加到文末。

(3)将文件1.txt内容追加到out.log。

3.tac命令速查手册

tac是反写的cat,其作用是将文件中的内容倒过来显示在控制台上。

4.nl命令速查手册

nl命令在info手册中的意思是“Number lines and write files”,它的作用可以被看作“cat-n”,其常用命令为“nl xx.log”,即打印文本时显示行号。nl命令可以为序号补零,示例如下。

注意: cat命令还有其他功能。例如,合并文件,并与输出符“>”一起使用,输出到新文件中;显示文件中不可见字符;与管道符“|”配合使用,用作管道符的输入内容,如“cat xxx.log|grep'我是cat'”,就是从xxx.log中找到“我是cat”字符;清空运行时文件,其命令为“cat/dev/null>xxx.log”。输出符、管道符等特殊符号的作用详见3.6节“特殊字符简析”。

3.3.2 日志查看:tail与head

tail命令一般用来查看日志使用,显示文件最新追加的内容。head命令一般用来从头部查看文件内容。

1.tail命令速查手册

tail命令默认在屏幕上显示指定文件的末尾10行。处理多个文件时会在各个文件之前附加包含文件名的行。如果没有指定文件或文件名为“-”,则按读取标准输入。

注意: 在使用“tail-f xxx.log”查看日志时,可以使用“Ctrl+S”快捷键停止滚动日志,使用“Ctrl+Q”快捷键继续滚动日志。

2.head命令速查手册

与tail命令相对的head命令,意思是从开头显示文件内容。head命令一般与其他命令合用的比较多,这种组合命令在后面的章节中会经常出现。

3.3.3 文件编辑器:vi/vim

Linux有很多文件编辑工具,如nano、emacs。在Linux中常用的编辑器是vi/vim。vim是vi的增强版。

简单来说,喜欢黑白的用vi,喜欢彩色的用vim。当然,vim不仅有彩色高亮功能,还有做一些方便的个性化定制功能。感兴趣的读者可以搜索“vimrc”,进行个性化定制。

为什么vim成为Linux最常用的文本编辑工具?因为它相比nano功能更强大,相比emacs学习难度较低。当然,最重要的原因是vi/vim被主流Linux发行版本内置了关系。

在熟练掌握Linux命令的操作后,我们可以使用vimrc进行个性化vim编辑器定制。

vim 有几种模式,即正常模式(normal)、编辑模式(edit)、底线命令模式(end line command)和visual模式。visual模式不常用。在normal模式下输入“v”,可以直接进入vim编辑器。

使用vi/vim打开文件时,编辑器默认是normal模式。在切换到其他模式后,可以按“Esc”键返回这个模式。

1.vi/vim如何编辑内容

(1)使用vim命令打开文件。

(2)在normal模式下输入“i”“a”“o”“s”,进入编辑模式。在编辑模式下输入内容和在Windows下打开写字板操作没有不同。

(3)在编辑模式下可以使用方向键移动光标进行字符的编辑。vim的编辑命令如表 3.4所示。

表3.4 vim的编辑命令

续表

(4)在编辑完成后,按“Esc”键退出编辑模式,进入normal模式。使用冒号“:”进入底线命令模式,输入“wq”保存退出。在vi/vim编辑器中,感叹号“!”就是强制的意思。所以一般输入“:wq!”强制保存退出。输入“:q”正常退出。输入“:q!”强制退出不保存,会丢失编辑内容。

(5)如果想将文章中某段内容提取出来保存为一个新文件,则可以使用下面的命令:

2.normal模式下的移动与增删改查

下面讲解提升文本操作效率的一些命令,normal模式下的移动命令如表3.5所示,normal模式下的增删改查快捷命令如表3.6所示。

表3.5 normal模式下的移动命令

续表

表3.6 normal模式下的增删改查快捷命令

注意: n、N 命令配合/、?使用会有不同的功能。/+n,一直向下搜索,/+N,一直向上搜索,?+n,一直向上搜索,?+N,一直向下搜索。

3.vim底线命令

前面用到的:wg已经用到vim的底线命令,即在normal模式下使用冒号“:”进入底线命令模式。底线模式的替换命令如表3.7所示,其他底线命令如表3.8所示。

表3.7 底线模式的替换命令

注意: 斜杠“/”为分隔符,也可用@、#等代替。

表3.8 其他底线命令

4.冷知识

(1)vim能够编辑jar包。

在Windows下,很多工具可以不用解压缩war包、jar包就能进行编辑。如果Linux在部署服务时需要修改一些配置文件,也能在不用解压缩的情况下进行修改就十分方便了。除了普通文件,vim也能打开编辑jar包中的文件。但要注意,vim打开jar包需要与zip配合使用。

安装zip的命令如下:

如果没有安装zip,在保存时会出现如下报错:

打开jar包后如何修改配置文件呢?

jar包内容提示“Select a file with cursor and press ENTER”,意思是选中一个文件后,按“Enter”键即可修改配置文件。例如,先选中文件“META-INF/maven/run.halo.app/halo.maven/pom.xml”,然后按“Enter”键,使用vi进行编辑,编辑完成后,输入命令“:wq”保存并返回上层界面,最后输入命令“:q”退出。

(2)不可见字符的处理。

在Linux执行脚本时,可能会遇到“/bin/bash^M”或“坏的解释器:没有那个文件或目录”这样的错误。

这些错误的原因可能是这个脚本在Windows下被修改过,导致在Linux执行脚本时出现了无法识别或无法执行的特殊字符。这些特殊字符在3.3.1节中的cat命令选项中提到过。

在Windows下使用某些文件编辑器进行批量替换后,文件中会产生一些隐藏字符,其中ASCII码中的“\r”,在Windows下使用不影响。但上传到Linux后会出现“^M”这样的隐藏字符。使用“vi-b”命令可以查看这些隐藏字符。

注意 :^M需要使用“Ctrl+M”快捷键输入。

5.vim的命令总结

vi/vim模式切换如图3.1所示。

图3.1 vi/vim模式切换

● 输入命令“vi/vim[fileName]”,进入normal模式。

● 在normal模式下输入“i”“a”“o”“s”,进入编辑模式。

● 在normal模式下输入冒号“:”,进入底线命令模式。

● 按“Esc”键退出编辑模式,切换到normal模式。

● 输入命令“:q”“:wq”“:q!”“:wq!”退出保存/不保存文件。

最后,将vi/vim编辑器的增删改查功能编写了一个打油诗。

编辑常用i、a、o,前后插入不用愁。

移动文末大写G,到达文首小gg。

删除用ndd,撤销用u重复点(.)。

复制粘贴yyp,查找斜杠加问号。

要想替换怎么办,冒号(:)进入底线中。

%s打头阵,小g戳在最后头。

w保存q退出,强制执行感叹号(!)。

jar包也能来编辑,隐藏字符vi-b。

3.3.4 基于vi的文件查看工具:more与less

读者学习过vi/vim,再来学习more与less就非常容易。more与less是基于vi的文件查看工具。这两个文件查看工具的命令类似cat命令,不过是以一页一页的方式显示阅读的。

下面来看more命令是如何使用的。

1.more命令速查手册

more命令可以显示百分比。一般从头排查问题日志可以用more命令。

(1)more命令的语法格式:more[选项][文件]。

(2)more命令的常用选项如表3.9所示。

表3.9 more命令的常用选项

(3)more命令示例。

(4)more命令的常用内置命令如表3.10所示。

表3.10 more命令的常用内置命令

注意: 有些快捷键效果类似。干扰视听命令,不在此表中列出。可以在 more 命令打开的文件中使用h命令查看内置命令的帮助文档,也可以使用man more查看详细的帮助文档。

2.less命令速查手册

less的意思是less is more。它不是more的反义词,而是more的一个高级版本。less命令的优点是查看文件之前不会加载整个文件,只会将要查看的数据加载至内存中。less适合查看内存大的文件。例如,内存超过200MB或1GB的文件,都可以使用less命令,提高查看文件效率。

(1)less命令的语法格式:less[选项][文件]。

(2)less命令的选项说明如表3.11所示。

表3.11 less命令的选项说明

续表

(3)less命令示例。

(4)less命令的内置命令。

对于more命令的内置命令,less命令基本都有,且更为丰富,只是不能按“Ctrl+C”快捷键退出less命令。less命令的内置命令如表3.12所示。

表3.12 less命令的内置命令

3.3.5 流文件编辑工具:sed

下面讲解流文件编辑工具sed。

vim编辑器需要在文件内部进行编辑。如果想在文件底部添加一句话或一个参数,则需要经历如下过程:

这一整套步骤比较烦琐。那有没有简单一点的方法呢?这就用到本节所讲的sed(Stream Editor)编辑工具。

注意: cat、echo命令也有使用追加重定向符号的功能,可以将内容追加到文件底部,但不能编辑。

1.sed命令速查手册

sed命令可以在不打开文件的情况下对文件进行增删改查操作,通常用来在自动化脚本中对文件进行编辑。

(1)sed命令的语法格式:sed[选项][sed 内置字符命令][输入文件]。

(2)sed命令的选项说明如表3.13所示。

表3.13 sed命令的选项说明

(3)sed命令的内置字符命令如表3.14所示。

表3.14 sed命令的内置字符命令

sed命令相较于其他命令,在语法格式上多了一种内置字符命令。内置字符命令用于对文件进行增删改查等操作,与vim的内置命令不一样,并不在文件中使用。

2.sed命令实例演示

(1)准备一个测试文件。

(2)sed命令示例:增。

添加文本有两种命令,一种是文后追加“a”,另一种是文前插入“i”,分别是 append、insert的意思。

常用的追加命令如下:

实例演示如下:

其他追加命令如下:

(3)sed命令示例:删。

删除文本的内置命令字符“d”,命令如下:

注意: 选项“-i”的意思是直接修改文件内容。如果不用选项“-i”,则修改的内容只能输出到终端。磁盘中的文件不会被修改。

(4)sed命令示例:改。

修改的内置命令字符是“s”,命令如下:

(5)sed命令示例:查。

3.sed命令总结

sed命令的常用方法如下。

(1)语法格式:sed [参数选项][sed内置命令 更新内容][文件(可选)]。

(2)在没有-i参数时,只在终端显示修改后的内容,不修改真实文件内容。示例如下:

(3)内置命令字符i、a、s、d的功能分别为插入、追加、替换、删除。

(4)$代表文件末尾,^代表匹配一行文本的头部。示例如下:

(5)sed命令可以批量替换多文件内容。示例如下:

作为Shell的“三剑客”之一(另外两个是grep、awk),sed命令还有强大的功能待发掘,想要深入研究的读者可以自行探索。 V3m0UGVVUDUhnA6+llVRg2NSi6C5Tj4KY4QGWga2EzNh+PBQn6ikF2wOgEJhGjnI

点击中间区域
呼出菜单
上一章
目录
下一章
×