Linux cat命令详解

描述

cat命令是Linux中最常用的命令之一,cat命令的名称来自于concatenate。它可以读取和连接文件,并将其内容写入到标准输出。

如果未指定文件名或者指定连字符-作为参数,则从标准输入读取内容,也就是复制标准输入到标准输出。

cat命令最常用于打印/查看一个或多个文本文件的内容。将一个文件的内容追加到另一个文件的末尾来合并文件,以及创建文件。

在本教程中我们将说明一些cat命令技巧。包括使用cat打印文件内容,重定向文件的内容,打印行号,去除重复的空行。

显示制表符TAB和空格字符,打印不可见字符,用cat连接文件,cat命令创建文件。

cat 命令详解

在讨论如何使用cat命令之前,让我们先回顾一下基本语法。cat命令语法形式是cat [OPTIONS] [FILE_NAMES]

OPTIONS是cat命令的选项,可选参数,可以运行命令cat --help查看所有可用的选项。FILE_NAMES零个或多个文件名,可选参数。

如果FILE_NAMES没有传递给cat命令,请指定指定连字符-作为参数,cat命令从标准输入读取内容。

cat 命令打印/查看文件内容

cat命令最基本和最常见的用法就是读取/查看/打印文件的内容。将打印文件内容写到标准输出。

例如命令cat etc/issue查看etc/issue文件内容,将会输出你当前的Linux发行版的名称。

cat etc/issue

cat 命令重定向文件的内容

默认情况下cat命令将内容写入标准输出。但您可以使用标准输出的重定向操作符>或者>>将标准输出重定向到文件,而不是终端的屏幕。

cat命令与重定向操作符一起使用时,你会发现cat命令也可实现cp命令的复制文件操作。

例如命令cat file1.txt > file2.txtfile1.txt的内容写入标准输出然后使用重定向操作符>重定向到file2.txt,实现复制。

如果file2.txt文件不存在,cat命令将创建该文件。否则,它将被覆盖file2.txt

日过不想被覆盖,还可以使用另一个标准输出重定向操作符>>>>操作符可追加任何内容到指定设备或者文件。

cat file1.txt > file2.txt
cat file1.txt >> file2.txt

cat 命令打印行号

很多VPS的提供商预构建的Linux服务器,基本都不会预装桌面环境Gnome/KDE等。也就是说你不可能在Linux服务器安装带GUI的编辑器。

此时如果需要打印文件的行号,除了使用vim/nano命令行编辑器打开文件显示行号之外,还可以是cat命令。

cat命令的-n选项允许允许查看文件并打印行号。例如命令cat -n etc/lsb-release

cat -n etc/lsb-release
1	DISTRIB_ID=Ubuntu
2	DISTRIB_RELEASE=18.04
3	DISTRIB_CODENAME=bionic
4	DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

cat 命令去除重复的空行

在编写脚本时你可能会在读入文件时,想去除文件中重复出现的空行。也就是说将多个空行删除为一个空行。

cat命令的-s选项可以轻松帮你实现这一点,让省去很多不需要Shell代码。节省你的时间。

例如命令cat -s file.txt删除文件file.txt的空行为一个空行。要完全删除空行可以使用tr命令或者grep命令实现。

cat -s file.txt

cat 命令显示制表符号TAB

如果你为不可见的制表符号感到困扰。cat命令的-T选项可以在视觉上区分制表符和空格,TAB字符将显示为^I

例如命令cat -T etc/hosts将打印etc/hosts文件中的内容,可让你直观的看到制表符。

cat -T etc/hosts
127.0.0.1^Ilocalhost
127.0.1.1^Iubuntu1804.localdomain

cat 命令打印不可见字符

cat命令的-e选项可以在视觉上查看行的结束位置,将在行的结尾处显示为$标记符号。

例如命令cat -e etc/lsb-release打印etc/lsb-release文件中的内容,可让你直观的看到行结束位置。

cat -e etc/lsb-release
DISTRIB_ID=Ubuntu$
DISTRIB_RELEASE=18.04$
DISTRIB_CODENAME=bionic$
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"$

cat 命令合并/连接文件

将两个或多个文件名作为参数传递给cat命令时,这会合并文件的内容。cat命令将按其参数中给出的顺序读取文件,并以相同的顺序合并打印文件内容。

这相当于将第二个文件的内容追加到第一个文件中,并在终端中显示两个文件的内容。这对于你想显示两个文件内容那个,但有不想创建文件时非常有用。

在查看两个文件的合并结果后,得到你想要的结果。您可以将合并的结果。使用重定向操作符>写入到文件中。

你也可以使用另一个重定向操作符>>>>操作符可追加任何内容到指定设备或者文件中。如果文件不存在,则将创建该文件。

cat file1.txt file2.txt

cat file1.txt file2.txt > combinedfile.txt
cat file1.txt file2.txt >> file3.txt

cat 命令创建文件

在编写脚本时你可能会想让用户输入非常的长的内容或者让用户可以输入任何字符然后保存到文件中。

此时可能会想到的时使用Vim,Sublime Text,Visual Studio Code或其他文本编辑器,但用户的计算机并一定存在这些编辑器。

如果你使用打开Vim让用户输入内容,但并不是所有用户都会使用这个让新用户不知道从何入手的编辑器。

最简单的解决方式就是使用cat命令作为编辑器,让用户输入任何内容。要做到这一点请在运行命令cat > file1.txt

当用户的完成内容的出入后,可按快捷键CRTL+D保存文件。如果用户不知道如何保存内容时,可在运行cat之前告诉用户保存的快捷键是CRTL+D

cat > file1.txt

结论

你已经知道如何使用cat命令和基础的选项。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分