前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux工具|新解运维工具之cat

Linux工具|新解运维工具之cat

原创
作者头像
六月暴雪飞梨花
发布2024-11-17 16:44:08
发布2024-11-17 16:44:08
14920
代码可运行
举报
运行总次数:0
代码可运行

好事发生

欢迎大家关注【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: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告cat 的翻译错误
要获取完整文档,请运行: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的一些命令做一些解释和介绍,希望对你有帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 好事发生
  • 引言
  • 前期准备
  • cat命令的用途
  • cat命令语法
  • cat命令实践
    • 1 创建一个新文件
    • 2 查看文件内容
      • 2.1 结合其他命令查看关键字
      • 2.2 查看多个文件的内容
    • 3 拷贝文件内容
    • 4 反向查看信息
    • 5 合并文件内容
    • 6 结合管道处理大文件
    • 7 显示行号-n
    • 8 使用 $ 显示行尾空格-e
    • 9 只显示非空行的行号-b
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档