欢迎大家关注【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
[root@localhost proc]# cat /etc/redhat-release
CentOS Linux release 7.7……
[root@localhost proc]#
Linux中的cat(concatenate)命令显示文件内容。它读取一个或多个文件并将其内容打印到终端。cat用于查看文件内容、组合文件、创建新文件、查看行号、压缩空格为一行、结合其他命令做一些其他更复杂的事情 等等。
本篇通过案例实操说明如何使用Linux中的cat命令。
【语法】
cat [options] [file_name]
注意⚠️:如果没有文件名或选项,cat命令会重复任何提供的输入。添加选项修改命令的工作方式,提供文件名指定要使用的文件。
【帮助文档】
[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: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告cat 的翻译错误
要获取完整文档,请运行:info coreutils 'cat invocation'
[root@localhost ~]#
建议在学习时提前创建一些文件,并写入一些内容,用来方便测试,这里我就还是用上次的文件来做测试。
可以使用命令 cat > test.txt
创建一个新文件,然后输入一些内容,最后使用快捷键 Crtl + C 退出,就创建了一个新文件,当然,也可以使用 cat "" > test02.txt
创建一个空文件。
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]#
使用 cat file
这个是我最常使用的命令,当然再结合其他的命令,可以作为运维时排查错误的最佳选择,为了方便测试,我手工输入一些内容到 test.txt
文件中,当我再次执行cat 查看命令时,如下展示。
[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]#
在日常运维中,使用 cat命令
结合 grep命令
很常用,比如我想查询文件中的关键字 Aion
。当然有些工具都没有颜色,查询后颜色没有多大变化,可以尝试使用 grep --color=auto
,这样 grep 会自动检测是否支持颜色输出。
[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]#
cat 命令也可以查看多个文件,例如我查看 test开头的所有文件,也可以按照文件顺序查看文件内容。
### 查看 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]#
将文件内容重定向到另一个文件中,可以追加也可以覆盖(演示追加)。这也是一个很常用的方式,尤其是在处理日志时或者脚本日志时。
[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]#
cat命令可以以相反的顺序(按行)显示文件内容。那么,使用tac(反过来的cat)可以反向查看文件内容,哈哈哈,是不是很有意思。
[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]#
这个同拷贝文件内容到另外一个文件差不多,可以组合cat命令函数来创建复杂的操作。例如,要组合两个文件的输出并将结果存储在一个新文件中。合并文件,可以合并一个文件到另外一个文件,也可以合并多个文件到另外一个文件。有兴趣的可以尝试下。
如果您在大文件上使用cat,最终会得到一个难以读取的巨大数据字符串。通过管道传输more命令将文件分解为页面。例如,对于名为 test03. txt
的大文件(此处我将test.txt 文件内容多次追加到 test03.txt),在more处为第一页,如果想要向下查阅其他内容,可以回车后查看。其他的也可以使用 less命令(同more差不多意思)。
[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--
这是一个很常用的场景,查看项目中的配置文件,一目了然的看到行号,然后修改配置文件,此时最好一次性定位到某一行进行修改。
[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]#
指示cat用美元符号($)突出显示每行的末尾和行之间的空格。这是一个比较常用的方式,尤其是配置文件莫名其妙的多出一些空格而无法排查问题时。例如我在文件test.txt 的 SQL内容 后面增加一些空格。显示如下:
[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]#
为了方便演示,我就在文件 test.txt 增加一些空行,执行 cat -b test.txt命令
后如下,可以看到空行,并没有给予行号的展示:
[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的一些命令做一些解释和介绍,希望对你有帮助。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。