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.txt
将file1.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命令和基础的选项。
-
Linux
+关注
关注
87文章
11290浏览量
209291 -
cat
+关注
关注
1文章
75浏览量
21278 -
命令
+关注
关注
5文章
683浏览量
22011
发布评论请先 登录
相关推荐
评论