cat
命令是Linux中最常用的命令之一,cat
命令的名称来自于concatenate。它可以读取和合并文件,并将其内容写入到标准输出。
如果未指定文件名或者指定连字符-
作为参数,则从标准输入读取内容,cat
命令复制标准输入到标准输出。
cat
命令最常用于打印/查看一个或多个文本文件的内容。将一个文件的内容追加到另一个文件的末尾来合并文件,以及创建文件。
在本教程中,我们将说明如何在Linux 使用cat 命令。包括使用 cat 命令查看文件内容,重定向文件的内容,打印行号,去除重复的空行等。
cat 命令详解
在讨论如何在Linux 使用 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 或其他文本编辑器,但用户的计算机并一定存在这些编辑器。
最简单的解决方式就是使用 cat
命令作为编辑器,让用户输入任何内容。要做到这一点请在运行命令 cat > file1.txt
。
当用户的完成内容的出入后,可按快捷键 CRTL+D
保存文件。如果用户不知道如何保存内容时,可在运行 cat
之前告诉用户保存的快捷键是 CRTL+D
。
cat > file1.txt
结论
你已经知道如何使用cat命令和基础的选项。如有疑问请在下方留言