Linux工具|新解运维工具之cat
好事发生欢迎大家关注【Aion】
这里推荐一篇实用的文章:AI 实战篇:Spring-AI再更新!细细讲下Advisors,作者:【努力的小雨】。
这篇文章作者主要讲 Spring AI再次进行了更新,尽管当前版本仍为非稳定版本(1.0.0-M3),但博主将持续关注这些动态,并从流行的智能体视角深入解析其技术底层。目前,Spring AI仍处于小众状态,尚未经过开源社区多年的维护和稳定化过程,这与已经较为成熟的Spring框架形成鲜明对比。即便是Spring AI的稳定版本(1.0.0-SNAPSHOT),在常见的maven仓库中也难以找到,仍需通过Spring的jfrog仓库进行访问。
引言上一篇学习了split命令(只是在MacOS中,Linux中的实际操作虽然写了但是还未整理完成,稍后整理完成一并发出),这一篇主要学习下linux中的cat命令,至于为什么要学习这个命令,主要是我这里有这个用途,学习split是为了分割文件,那么其实下一个操作也就是需要合并文文件,为了给自己增加知识,多学习一些命令,久而久之便会了,这也是写这一篇算是总结的博文的最终目的。
前期准备为了更准确的学习和实践,方便后续使用,操作前最好准备一台Linux的操作系统以及可以使用的一个终端。
操作系统:CentOS Linux release 7.7,GNU/Linux
内核版本:Red Hat 4.8.5-36
代码语言:javascript代码运行次数:0运行复制[root@localhost proc]# cat /etc/redhat-release
CentOS Linux release 7.7……
[root@localhost proc]#cat命令的用途Linux中的cat(concatenate)命令显示文件内容。它读取一个或多个文件并将其内容打印到终端。cat用于查看文件内容、组合文件、创建新文件、查看行号、压缩空格为一行、结合其他命令做一些其他更复杂的事情 等等。
本篇通过案例实操说明如何使用Linux中的cat命令。
cat命令语法【语法】
cat [options] [file_name]
注意⚠️:如果没有文件名或选项,cat命令会重复任何提供的输入。添加选项修改命令的工作方式,提供文件名指定要使用的文件。
【帮助文档】
代码语言:javascript代码运行次数:0运行复制[root@localhost ~]# cat --help
用法:cat [选项]... [文件]...
将[文件]或标准输入组合输出到标准输出。
-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出
如果没有指定文件,或者文件为"-",则从标准输入读取。
示例:
cat f - g 先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
cat 将标准输入的内容复制到标准输出。
GNU coreutils online help:
请向
要获取完整文档,请运行:info coreutils 'cat invocation'
[root@localhost ~]#cat命令实践建议在学习时提前创建一些文件,并写入一些内容,用来方便测试,这里我就还是用上次的文件来做测试。
1 创建一个新文件可以使用命令 cat > test.txt 创建一个新文件,然后输入一些内容,最后使用快捷键 Crtl + C 退出,就创建了一个新文件,当然,也可以使用 cat "" > test02.txt 创建一个空文件。
代码语言:javascript代码运行次数:0运行复制root@localhost test]# cat > test.txt
## 此处可以输入内容后,再使用快捷键保存并退出。
^C
[root@localhost test]# ll
总用量 4
-rw-r--r--. 1 root root 1 11月 17 11:24 test.txt
[root@localhost test]#
[root@localhost test]# cat "" > test02.txt
cat: : 没有那个文件或目录
[root@localhost test]#
[root@localhost test]# ll
总用量 4
-rw-r--r--. 1 root root 0 11月 17 11:25 test02.txt
-rw-r--r--. 1 root root 1 11月 17 11:24 test.txt
[root@localhost test]#2 查看文件内容使用 cat file 这个是我最常使用的命令,当然再结合其他的命令,可以作为运维时排查错误的最佳选择,为了方便测试,我手工输入一些内容到 test.txt 文件中,当我再次执行cat 查看命令时,如下展示。
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat test02.txt
[root@localhost test]#
[root@localhost test]# cat test.txt
Java
Python
Podman
Postman
Vue
SQL
GraphQL
RESTful
66666
Aion
你好
hello world
等等
[root@localhost test]#2.1 结合其他命令查看关键字在日常运维中,使用 cat命令 结合 grep命令 很常用,比如我想查询文件中的关键字 Aion 。当然有些工具都没有颜色,查询后颜色没有多大变化,可以尝试使用 grep --color=auto,这样 grep 会自动检测是否支持颜色输出。
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat test.txt | grep "Aion"
Aion
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# cat test.txt | grep "Aion" --color=auto
Aion
[root@localhost test]#2.2 查看多个文件的内容cat 命令也可以查看多个文件,例如我查看 test开头的所有文件,也可以按照文件顺序查看文件内容。
代码语言:javascript代码运行次数:0运行复制### 查看 test开头的所有文件
[root@localhost test]# cat test*
## Hello
这是 test02.txt 中的内容
## Aion Write
Java
Python
Podman
Postman
Vue
SQL
GraphQL
RESTful
66666
Aion
你好
hello world
等等
### 按照文件顺序查看文件内容
[root@localhost test]# cat test.txt test02.txt
Java
Python
Podman
Postman
Vue
SQL
GraphQL
RESTful
66666
Aion
你好
hello world
等等
## Hello
这是 test02.txt 中的内容
## Aion Write
[root@localhost test]#3 拷贝文件内容将文件内容重定向到另一个文件中,可以追加也可以覆盖(演示追加)。这也是一个很常用的方式,尤其是在处理日志时或者脚本日志时。
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat test02.txt
## Hello
这是 test02.txt 中的内容
## Aion Write
[root@localhost test]# 追加文件内容
[root@localhost test]# cat test02.txt >> test.txt
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# cat test.txt | grep "这是"
这是 test02.txt 中的内容
[root@localhost test]#4 反向查看信息cat命令可以以相反的顺序(按行)显示文件内容。那么,使用tac(反过来的cat)可以反向查看文件内容,哈哈哈,是不是很有意思。
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# tac test.txt
## Aion Write
这是 test02.txt 中的内容
## Hello
等等
hello world
你好
Aion
66666
RESTful
GraphQL
SQL
Vue
Postman
Podman
Python
Java
[root@localhost test]#5 合并文件内容这个同拷贝文件内容到另外一个文件差不多,可以组合cat命令函数来创建复杂的操作。例如,要组合两个文件的输出并将结果存储在一个新文件中。合并文件,可以合并一个文件到另外一个文件,也可以合并多个文件到另外一个文件。有兴趣的可以尝试下。
6 结合管道处理大文件如果您在大文件上使用cat,最终会得到一个难以读取的巨大数据字符串。通过管道传输more命令将文件分解为页面。例如,对于名为 test03. txt 的大文件(此处我将test.txt 文件内容多次追加到 test03.txt),在more处为第一页,如果想要向下查阅其他内容,可以回车后查看。其他的也可以使用 less命令(同more差不多意思)。
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat test03.txt | more
123
第三个文件
Java
Python
Podman
Postman
Vue
SQL
GraphQL
RESTful
66666
Aion
你好
hello world
等等
## Hello
这是 test02.txt 中的内容
## Aion Write
Java
Python
Podman
Postman
Vue
--More--7 显示行号-n这是一个很常用的场景,查看项目中的配置文件,一目了然的看到行号,然后修改配置文件,此时最好一次性定位到某一行进行修改。
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat -n test.txt
1 Java
2 Python
3 Podman
4 Postman
5 Vue
6 SQL
7 GraphQL
8 RESTful
9 66666
10 Aion
11 你好
12 hello world
13 等等
14 ## Hello
15 这是 test02.txt 中的内容
16 ## Aion Write
[root@localhost test]#8 使用 $ 显示行尾空格-e指示cat用美元符号($)突出显示每行的末尾和行之间的空格。这是一个比较常用的方式,尤其是配置文件莫名其妙的多出一些空格而无法排查问题时。例如我在文件test.txt 的 SQL内容 后面增加一些空格。显示如下:
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat -e test.txt
Java$
Python$
Podman$
Postman$
Vue$
SQL $
GraphQL$
RESTful$
66666$
Aion$
M-dM-=M- M-eM-%M-=$
hello world$
M-gM--M-^IM-gM--M-^I$
## Hello$
M-hM-?M-^YM-fM-^XM-/ test02.txt M-dM-8M--M-gM-^ZM-^DM-eM-^FM-^EM-eM-.M-9$
## Aion Write$
[root@localhost test]#9 只显示非空行的行号-b为了方便演示,我就在文件 test.txt 增加一些空行,执行 cat -b test.txt命令 后如下,可以看到空行,并没有给予行号的展示:
代码语言:javascript代码运行次数:0运行复制[root@localhost test]# cat -b test.txt
1 Java
2 Python
3 Podman
4 Postman
5 Vue
6 SQL
7
8 GraphQL
9 RESTful
10 66666
11 Aion
12 你好
13 hello world
14 等等
15 ## Hello
16 这是 test02.txt 中的内容
17 ## Aion Write
[root@localhost test]#总结作为一名运维工程师需要了解掌握很多技能,比如说操作系统、开源组件、监控相关、编程知识、网络知识、数据库知识、自动化技能和日志分析能力。当然也不能缺少一些软技能,例如沟通、抗压等,要和同事、领导以及客户保持良好的沟通,理解需求,提供有效的解决方案,需要应对高强度的工作压力,保持冷静,快速解决问题。本篇主要是运维工程师在实际工作中能快速且熟练的使用Linux的一些命令做一些解释和介绍,希望对你有帮助。
龟派气功!长友佑都拍摄世界杯定妆照秀出日本动漫《...暗黑2男巫副手攻略:提升战斗力的必备伙伴