简介
cat 命令源于 “concatenate” 的缩写,意为“连接”或“串联”。这个命令用于将文件的内容显示在标准输出(通常是终端),并且可以将多个文件的内容连接起来显示。其基本原理是通过读取文件内容并输出,使用户能够快速查看文件的内容。
使用方式
cat [选项...] [文件...]
常用选项
-
-A, --show-all
:等同于-vET
,显示所有的控制字符。 -
-b, --number-nonblank
:为非空行输出行号,该选项会覆盖-n
选项。 -
-e
:等同于-vE
。 -
-E, --show-ends
:在每行的末尾显示一个$
符号。 -
-n, --number
:为所有行输出行号。 -
-s, --squeeze-blank
:压缩重复的空行。 -
-t
:等同于-vT
。 -
-T, --show-tabs
:将制表符(TAB)显示为^I
。 -
-v, --show-nonprinting
:使用^
和M-
来表示不可打印字符,其中不包括制表符和换行符。 -
--help
:显示帮助信息。 -
--version
:显示版本信息。
参考示例
查看文件内容
cat test.txt
使用 cat 文件名
可以直接在终端中输出指定文件的内容:
jay@jaylinuxlenovo:~/test/cmd_test_dir$ cat test.txt
这是一个 test.txt 文件
上面有一个空行
上面有两个空行
这里是一个制表符
压缩连续的多个空白行
cat -s test.txt
如果指定文件中有多个连续的空白行,那么使用 -s
选项可以在其显示的时候压缩掉重复的空白行,只显示一个空白行:
jay@jaylinuxlenovo:~/test/cmd_test_dir$ cat -s test.txt
这是一个 test.txt 文件
上面有一个空行
上面有两个空行
这里是一个制表符
每行末尾显示 $
号
cat -E test.txt
使用 -E 选项会在输出时为每行的末尾添加一个 $
符号作为标记:
jay@jaylinuxlenovo:~/test/cmd_test_dir$ cat -E test.txt
这是一个 test.txt 文件$
$
上面有一个空行$
$
$
上面有两个空行$
$
这里是一个制表符$
$
将制表符显示为 ^I
cat -T test.txt
如果文件中存在制表符,那么使用 -T
选项可以将制表符以 ^I
的形式显示出来:
jay@jaylinuxlenovo:~/test/cmd_test_dir$ cat -T test.txt
这是一个 test.txt 文件
上面有一个空行
上面有两个空行
^I这里是一个制表符
合并文件到一个新文件中
cat test.txt test2.txt > new.txt
cat
支持指定多个文件,用这种方法可以将多个文件的内容合并到一个文件中:
jay@jaylinuxlenovo:~/test/cmd_test_dir$ cat new.txt
这是一个 test.txt 文件
上面有一个空行
上面有两个空行
这里是一个制表符
这是 test2.txt
显示行号
cat -n test.txt
使用 -n
选项可以在输出文件内容时添加行号:
jay@jaylinuxlenovo:~/test/cmd_test_dir$ cat -n test.txt
1 这是一个 test.txt 文件
2
3 上面有一个空行
4
5
6 上面有两个空行
7
8 这里是一个制表符
9
注意事项
-
使用 cat 命令合并大文件时要小心,因为它会将所有文件内容加载到内存中,可能会消耗大量资源。
-
当查看非文本文件(如二进制文件)时,cat 输出的内容可能包含乱码,甚至有可能改变终端的行为。
-
在使用重定向创建文件时,如果目标文件已存在,其原有内容会被覆盖。务必检查文件名以避免数据丢失。
-
如果你使用 cat 命令查看一个文件的内容,并将输出重定向回同一个文件,该文件的内容会被清空,导致数据丢失。