百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

通过16个实例掌握 Cat 命令 - Linux“撸猫”技巧

bigegpt 2024-08-12 14:28 3 浏览

cat (concatenate) 命令是 Linux 和 Unix 中的基本命令之一。它用于创建新文件、连接文件,也用于在标准输出中查看文件的内容。

基本语法:

# cat <options> <File>

可用选项:

(1) 使用 cat 命令创建文件

假设我们要创建一个名为 linux_world 的新文件,键入 cat 命令,后跟要插入到文件中的文本内容,确保在最后键入 Ctrl + D 保存文件。

[root@linuxtechi ~]# cat > linux_world
Hi this is my first file in linux.
Linux always rocks
Thanks
[root@linuxtechi ~]#

(2) 查看文件的内容

要使用 cat 命令查看现有文件的内容,示例如下:

[root@linuxtechi ~]# cat linux_world
Hi this is my first file in linux.
Linux always rocks
Thanks
root@linuxtechi ~]#

(3) 查看多个文件的内容

要使用 cat 命令查看多个文件的内容,请在 cat 后面输入文件名 ,示例如下:

[root@linuxtechi ~]# cat linux_world linux_distributions /etc/fstab

上面的命令将在终端上显示三个文件的内容输出。

(4) 明智地查看内容页面

假如我们有一个大文件,其内容不能立即显示在屏幕上。在这种情况下,我们可以使用 cat 的 more 和 less 命令来明智地查看内容页。

[root@linuxtechi ~]# cat /etc/passwd | more
[root@linuxtechi ~]# cat /etc/passwd | less

(5) 不带文件名参数的 cat 命令

如果我们没有指定任何参数,那么它将从键盘读取输入。

[root@linuxtechi ~]# cat
Ubuntu Linux Rocks at desktop Level

现在按 Ctrl+d 通知 cat 已经到达文件结束 (EOF)。在这种情况下,它将显示一行文本两次,因为它将 std 输入复制到 std 输出。

[root@linuxtechi ~]# cat
Ubuntu Linux Rocks at desktop Level
Ubuntu Linux Rocks at desktop Level
[root@linuxtechi ~]#

(6) 使用行号查看内容

在 cat 命令中使用 -n 选项可以查看文件的内容和行号。

[root@linuxtechi ~]# cat -n linux_world
1 Hi this is my first file in linux.
2 Linux always rocks
3 Thanks
[root@linuxtechi ~]#

在这种情况下,如果你的文件有空行,那么上面的命令也会显示空行数,所以要删除空行编号,我们可以使用 -b 选项来代替上面命令中的 -n

(7) 将内容从一个文件复制到另一个文件

在 cat 命令中使用 > 符号,可以将一个文件的内容复制到另一个文件,示例如下:

[root@linuxtechi ~]# cat linux_world > linux_text
[root@linuxtechi ~]#

在这种情况下,如果 linux_text 文件中有任何内容,那么它将被 linux_world 文件的内容覆盖

(8) 将一个文件的内容附加到另一个文件

在 cat 命令中使用 >> 符号,可以将一个文件的内容追加到另一个文件。示例如下:

[root@linuxtechi ~]# cat /etc/passwd >> linux_text
[root@linuxtechi ~]#

上面的命令将在末尾将 /etc/passwd 文件的内容附加到 linux_text 文件

使用 cat 命令验证 linux_text 文件的内容

(9) 将多个文件的输出重定向到单个文件

cat 命令还可以用于将多个文件的内容合并为单个文件,示例如下:

[root@linuxtechi ~]# cat linux_world linux_distributions /etc/fstab > linux_merge_text

上面的命令将 3 个文件的输出合并为一个文件 linux_merge_text

(10) 使用标准输入操作符获取输入

在 cat 命令中使用 < 符号从标准输入操作符获取输入,示例如下:

[root@linuxtechi ~]# cat < linux_distributions
RHEL
CentOS
Fedora
Ubuntu
SuSE
Linux Mint
[root@linuxtechi ~]#

(11) 将多个文件排序输出为单个文件

cat 命令还可以对多个文件的内容进行排序,并将其合并为单个文件。默认情况下,排序将按照字母顺序进行,如果你想在数字的基础上排序,那么在 sort 命令中使用 -n 选项。

[root@linuxtechi ~]# cat linux_text linux_distributions /etc/passwd | sort > linux_sort

(12) 在每一行的末尾插入 $

如果你想在文件中每一行的末尾附加 $ (dollar) 符号,那么在 cat 命令中使用 -E 选项。

[root@linuxtechi ~]# cat -E linux_world
Hi this is my first file in linux.$
Linux always rocks$
Thanks$
[root@linuxtechi ~]#

(13) 显示内容中的制表符

如果要使用 cat 命令查看文件内容中的制表符,请使用 -T 选项,示例如下:

让我们创建一个带有制表符的文件

现在内容中的制表符将显示为 ^I

(14) 挤压重复的空白行

Use ‘-s’ option in cat command to suppress the repeated blank lines.
When we use -s option in cat command then it only show one blank line
and will squeeze repeated blank line.

在 cat 命令中使用 -s 选项禁止重复空行,它只显示一个空行,并将挤压重复的空行。

让我们以文件 linux_blank 为例,它由多个重复的空行组成

我们使用 cat 命令删除输出中重复的空行

[root@linuxtechi ~]# cat -s linux_blank 
test

test1
test2

test3

test4
[root@linuxtechi ~]#

(15) 按倒序查看内容

tac 是 cat 反义词,tac 命令将以反转顺序显示输出,示例如下:

[root@linuxtechi ~]# tac linux_world
Thanks
Linux always rocks
Hi this is my first file in linux.
[root@linuxtechi ~]#

(16) 显示非打印字符

cat 命令中的 -v 选项用于显示非打印字符。当我们怀疑 CRLF 结束行时,这个选项变得非常有用,在这种情况下,它将在每行的末尾显示为 ^M

不带 -v 选项的内容输出

[root@linuxtechi tmp]# cat test_file
hi there

带有 -v 选项的内容输出

[root@linuxtechi tmp]# cat -v test_file
hi there^M
[root@linuxtechi tmp]#

我的开源项目

  • course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 - github 仓库)

相关推荐

为3D手游打造, Visual Studio Unity扩展下载

IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...

由ArcMap属性字段自增引出字段计算器使用Python的技巧

1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...

微软首次回答 HoloLens 相关问题,终于爆料了

fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...

C#指针的应用(c#指针类型)

C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...

C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)

C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...

欢迎回来:Fortran意外重回流行编程语言20强榜单

TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...

C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案

简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...

C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤

在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...

C# (一)状态机模式(状态机代码实现)

最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...

C# 中 Predicate 详解(c#中的replace)

Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...

C#中$的用法?(c#中&&什么意思)

文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...

C#并行编程:Parallel类(c# 并行处理)

在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...

颠覆认知!用Span重构foreach循环竟让数据处理快如闪电

在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...

Unity3D手游开发实践《腾讯桌球》客户端开发经验总结

本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...