【Linux命令详解 | cat命令】Linux系统中用于显示或连接文件的命令

news2025/2/23 13:43:38

在这里插入图片描述


文章标题

  • 简介
  • 一,参数列表
  • 二,使用介绍
    • 1. 显示文件内容
    • 2. 创建文件
    • 3. 连接文件
    • 4. 显示行号
    • 5. 压缩空行
    • 6. 显示特殊字符
    • 7. 显示行号和特殊字符
    • 8. 从标准输入读取
    • 9. 显示文件开头或结尾
    • 10. 备份文件
    • 11. 显示文件内容至多屏幕大小
    • 12. 转义正则表达式
    • 13. 显示文件中的制表符
    • 14. 显示隐藏字符
    • 15. 将二进制文件复制
  • 总结


简介

cat命令用于显示或连接文件,是Linux系统中非常常用的文件操作命令。通过cat命令,可以显示、创建、连接文件。熟练掌握cat命令的用法,是掌握Linux系统操作的重要一步。

一,参数列表

参数功能
-A显示不可打印字符,并在行尾显示$
-b显示行号,行号添加在非空行前面
-E显示行结束字符$
-n显示包含行号的输出
-s压缩连续的空行输出
-T显示制表符为^I
-v显示不可打印字符
文件要显示或连接的文件

二,使用介绍

1. 显示文件内容

cat命令最基本的用法就是显示文件内容。在命令行输入cat文件名可以显示该文件的内容。

例如,当前目录下有一个文件demo.txt,内容为:

This is a test file.
Hello World!  

要显示该文件内容,可以输入:

cat demo.txt

输出结果为:

This is a test file.
Hello World!

cat命令将demo.txt文件的内容原样显示出来。

cat命令也可以显示多个文件,例如:

cat demo.txt test.txt

这样将一次显示出demo.txt和test.txt的内容。

2. 创建文件

cat命令不仅可以显示文件内容,还可以创建新文件。

例如,可以使用下面的命令创建一个文件demo2.txt:

cat > demo2.txt

然后输入文件内容,如:

This is a new file.

按Ctrl+D结束文件内容的输入。这样就创建了文件demo2.txt,内容为刚才输入的文本。

也可以将内容重定向到文件中,例如:

cat <<EOF > demo3.txt
Hello
This is demo3
EOF

这将在demo3.txt中创建内容为"Hello"和"This is demo3"的文件。

3. 连接文件

cat命令可以将多个文件连接起来输出。

例如当前目录下有三个文件:

  • demo.txt 内容为"This is a test file"
  • test.txt 内容为"Hello World"
  • demo2.txt 内容为"This is a new file"

可以使用cat命令将这三个文件连接成一个文件:

cat demo.txt test.txt demo2.txt > combined.txt

这样combined.txt的内容就成了三个文件内容的总和。

4. 显示行号

使用cat命令的-n参数可以显示输出时包含行号:

cat -n demo.txt

输出结果:

     1	This is a test file.
     2	Hello World!

行号将显示在每行内容前面。

5. 压缩空行

使用-s参数可以压缩文件中连续的空行,只显示一行空行。

例如文件内容为:

Hello

World


Goodbye

使用cat -s显示将会变成:

Hello

World 

Goodbye

中间的连续空行被压缩成只显示一行。

6. 显示特殊字符

  • 使用-v参数可以显示文件中的特殊字符

  • 使用-E参数可以显示行结束符$

  • 使用-T参数可以显示Tab键为^I

例如文件内容为:

Hello	World
Goodbye$

使用cat -TEv显示结果为:

Hello^IWorld$
Goodbye$

7. 显示行号和特殊字符

cat命令的多个参数可以组合使用,例如同时显示行号和特殊字符:

cat -n -TEv demo.txt

这将同时显示行号、行结束符和制表符。

8. 从标准输入读取

cat命令可以不指定文件名,从标准输入读取内容。

例如:

cat

然后输入内容,按Ctrl+D结束。这将从标准输入读取内容。

也可以将其他命令的输出通过管道传递给cat:

ls -l | cat

这将显示ls -l命令的输出。

9. 显示文件开头或结尾

虽然cat命令可以显示整个文件内容,但有时只需要显示开头或结尾的部分。

这时可以结合head和tail命令。

例如显示文件开头5行:

head -n 5 demo.txt | cat

显示文件结尾5行:

tail -n 5 demo.txt | cat

head和tail命令可以提取文件开头或结尾部分,然后通过管道传递给cat命令显示出来。

10. 备份文件

可以使用cat命令来备份文件。

例如将demo.txt备份为demo_bak.txt:

cat demo.txt > demo_bak.txt

这将复制demo.txt的全部内容到demo_bak.txt中。

11. 显示文件内容至多屏幕大小

cat命令默认会显示整个文件的内容,但有时只需要查看一屏的内容。

可以使用下面的命令只显示一屏大小的内容:

cat demo.txt | less

less命令可以按页显示文件内容。

12. 转义正则表达式

cat命令可以用来转义正则表达式中的特殊字符。

例如想使用正则表达式匹配数字,可以:

cat << EOF > pattern.txt
[0-9]
EOF

这会将正则表达式写到pattern.txt文件中,而不会被Shell解析。

13. 显示文件中的制表符

cat命令默认不会显示Tab键,只显示空格。

使用-T参数可以将Tab键以^I显示:

cat -T demo.txt

这在查看 Makefile 或源代码文件时很有用。

14. 显示隐藏字符

使用cat -v 可以显示文件中的一些隐藏字符,例如:

NL(换行符)显示为$
TAB(制表符)显示为^I  
DEL删除字符显示为^?

这可以帮助查看文件中包含的一些隐藏的控制字符。

15. 将二进制文件复制

cat命令可以用来复制二进制文件。

例如将一个图片测试.jpg 复制为测试2.jpg:

cat test.jpg > test2.jpg

cat命令将数据原封不动地复制。

这比文本编辑器打开图片文件要好,不会因为编码问题改变图片内容。


总结

cat命令作为Linux系统中常用的文件查看和处理命令,功能强大。掌握cat的各种参数用法,可以让我们更方便地处理文件内容。

在显示文件、创建文件、连接文件等方面,都可以使用cat命令。和其他命令组合使用,也可以实现显示行号、只查看部分内容等效果。

熟练使用cat命令,必将提高我们在Linux系统中的文件处理效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线段树模板12

线段树 洛谷上有两道线段树模板&#xff08;指模板1&#xff0c;模板2&#xff09;都是区间维护的&#xff0c;也就是说&#xff0c;都离不开lasytag的维护&#xff0c;为了提高效率&#xff0c;故使用了lasytag,这里看一下题 【模板】线段树 1 题目描述 如题&#xff0c;已…

ChatGLM实战:基于LangChain构建自己的私有知识库

作者简介&#xff1a;赵辉&#xff0c;区块链技术专家&#xff0c;精通各种联盟链、公链的底层原理&#xff0c;拥有丰富的区块链应用开发经验。 在之前的 ChatGLM 微调训练的实验中&#xff0c;由于数据量较小&#xff0c;调试效果并不理想。同时&#xff0c;数据需要符合 Pro…

项目管理和产品管理之间的区别

产品管理和项目管理是两个在企业中至关重要的职能部门&#xff0c;它们各自承担着不同的职责和任务。虽然两者在某些方面存在重叠&#xff0c;但它们的核心目标和方法有很大的不同。本文将对产品管理和项目管理进行详细的比较和分析。 “项目管理和产品管理有什么区别&#xff…

一周 AIGC 丨苹果下架多款 AIGC 应用,阿里云开源通义千问 70 亿参数模型

多个 AIGC 应用在苹果应用商店下架&#xff0c;包含数据采集和使用不够规范等问题。阿里云开源通义千问 70 亿参数模型&#xff0c;包括通用模型 Qwen-7 B 和对话模型 Qwen-7 B-Chat。腾讯混元大模型开始应用内测&#xff0c;内部多个业务线接入测试。百度智能云“千帆大模型平…

textarea 标签如何创建多行文本输入框?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ textarea 的写法⭐ 代码含义⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、…

看门狗文章

1. iwdg.c #include "stm32f4xx.h" #include "iwdg.h"//prer&#xff1a;预分频值 //rlr&#xff1a;自动重装载值 void IWDG_Init(unsigned char prer,unsigned int rlr)//IWDG初始化 {IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);…

Grafana V10 告警推送 邮件

最近项目建设完成&#xff0c;一个城域网项目&#xff0c;相关zabbix和grafana展示已经完&#xff0c;想了想&#xff0c;不想天天看平台去盯网络监控平台&#xff0c;索性对告警进行分类调整&#xff0c;增加告警的推送&#xff0c;和相关部门的提醒&#xff0c;其他部门看不懂…

linux网络编程--线程池UDP

目录 学习目标 1线程池 2.UDP通信 3本地socket通信 学习目标 了解线程池模型的设计思想能看懂线程池实现源码掌握tcp和udp的优缺点和使用场景说出udp服务器通信流程说出udp客户端通信流程独立实现udp服务器代码独立实现udp客户端代码熟练掌握本地套接字进行本地进程通信 1…

【网络】自定义协议 | 序列化和反序列化 | Jsoncpp

本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例&#xff0c;实现用jsoncpp来进行序列化和反序列化 阅读本文之前&#xff0c;请先阅读 自定义协议 | 序列化和反序列化 | 以tcpServer为例 1.安装jsoncpp 我所用的系统是centos7.6&#xff0c;先用下面的命令查找相关的包 …

AST还原实战| 实战还原一个22M的混淆js大文件

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1. 需求分析 之前有星友发了这个大文件在群里: https://t.zsxq.com/10…

CountDownLatch 使用详情

CountDownLatch 是 Java.util.concurrent 包下的一个类&#xff0c;它可以用来实现一个或多个线程等待其他线程完成后再继续执行的场景。 CountDownLatch 类中有一个计数器&#xff0c;每次调用 countDown() 方法计数器的值减1&#xff0c;当计数器的值变为0时&#xff0c;调用…

面向大模型的存储加速方案设计和实践

这是 AI 大底座系列云智公开课的第三期内容。前两期我的两位同事已经向大家介绍了高性能网络和 GPU 容器虚拟化的相关内容。今天我们把目光聚焦在存储方向&#xff0c;一起来看看面向大模型的存储加速方案的设计和实践。 今天将从以下三个方面来展开这次分享&#xff1a; 介绍…

APP外包开发的Flutter框架

Flutter 是一种流行的开源UI框架&#xff0c;由谷歌开发&#xff0c;用于构建跨平台的移动应用程序。它使用一套统一的代码库&#xff0c;可以在多个平台上&#xff08;如Android、iOS、Web、桌面等&#xff09;保持一致的外观和行为。今天和大家分享一些基于 Flutter 开发的常…

CI/CD持续集成持续发布(jenkins)

1.背景 在实际开发中&#xff0c;我们经常要一边开发一边测试&#xff0c;当然这里说的测试并不是程序员对自己代码的单元测试&#xff0c;而是同组程序员将代码提交后&#xff0c;由测试人员测试&#xff1b; 或者前后端分离后&#xff0c;经常会修改接口&#xff0c;然后重新…

【CSS】说说响应式布局

目录 一、是什么 二、怎么实现 1、媒体查询 2、百分比 3、vw/vh 4、小结 三、总结 一、是什么 响应式设计简而言之&#xff0c;就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。 响应式网站常见特点&#xff1a; 同时适配PC 平板 手机等…

代码随想录 - 数组

数组是存放在连续内存空间上的相同类型数据的集合。 注意&#xff1a; 数组下标都是从0开始的。数组内存空间的地址是连续的 数组的在内存空间的地址是连续的&#xff0c;所以在删除或者增添元素的时候&#xff0c;就难免要移动其他元素的地址。 例如删除下标为3的元素&#x…

SpringMVC的注解

文章目录 前言前期准备ResponseBody 返回JSONRequestMapping 映射控制器GetMapping、PostMapping 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; SpringMVC框架只需要少量的配置即可快速实现Web应用程序开发&#xff0c;不需要大量的XML配置文件。 不…

【ES】笔记-简化对象写法箭头函数及声明特点

简化对象写法&箭头函数及声明特点 简化对象写法箭头函数及声明特点 简化对象写法 ES6 允许在大括号里面&#xff0c;直接写入变量和函数&#xff0c;作为对象的属性和方法.这样的书写更加简介 声明变量和和函数 let name南昌大学;let changefunction(){console.log(我可以改…

如何使用Kafka构建事件驱动的架构

事件驱动的架构(EDA)是一种软件设计模式&#xff0c;它关注事件的生成、检测和使用&#xff0c;以支持高效和可扩展的系统。在EDA中&#xff0c;事件是组件之间通信的主要手段&#xff0c;允许它们实时交互和响应更改。这种架构促进了松散耦合、可扩展性和响应性&#xff0c;使…

Semantic Kernel 入门系列:突破提示词的限制

无尽的上下文 LLM对自然语言的理解和掌握在知识内容的解读和总结方面提供了强大的能力。 但是由于训练数据本身来自于公共领域&#xff0c;也就注定了无法在一些小众或者私有的领域能够足够的好的应答。 因此如何给LLM 提供足够多的信息上下文&#xff0c;就是如今的LLM AI应…