cat命令详解
cat
是 Linux/Unix 中的一个非常常用的命令,主要用于 连接 文件并显示文件内容。它的名称来源于 concatenate(连接),不仅可以查看文件内容,还能将多个文件合并为一个文件,或用作其他数据流操作。
以下是对 cat
指令的详细讲解,包括其常见选项、功能和使用示例。
基本语法
cat [选项] [文件...]
- 文件:指定一个或多个文件,如果省略文件参数,
cat
会从标准输入(stdin)读取数据。 - 选项:用于增强或控制
cat
命令的输出。
基本功能
- 显示文件内容:直接输出指定文件的内容到终端。
- 合并文件:将多个文件的内容连接起来,并输出到终端或另存为一个新文件。
- 创建文件:通过重定向将输入内容保存到新文件中。
- 追加文件内容:将多个文件合并或将数据流追加到文件末尾。
常用选项详解
1. 显示文件内容
cat [文件名]
显示指定文件的内容。
cat file.txt
2. -n
:显示行号
为每一行添加行号,空行也会编号。
cat -n file.txt
输出示例:
1 Line 1
2
3 Line 2
3. -b
:为非空行添加行号
与 -n
类似,但只为非空行编号。
cat -b file.txt
输出示例:
1 Line 1
2 Line 2
4. -s
:压缩连续的空行
将多行连续的空行合并为一行。
cat -s file.txt
原文件内容:
Line 1
Line 2
输出:
Line 1
Line 2
5. -v
:显示非打印字符
将文件中的不可见字符(如制表符、换行符等)显示为可见形式。
cat -v file.txt
输出示例:
- 制表符:显示为
^I
- 行尾符号:显示为
$
6. -T
:将制表符显示为 ^I
cat -T file.txt
7. -E
:显示每行末尾的 $
符号
cat -E file.txt
输出示例:
Line 1$
Line 2$
高级用法
1. 合并多个文件
将多个文件的内容合并后输出到终端,或重定向到一个新文件。
cat file1.txt file2.txt > merged.txt
2. 文件内容追加
将一个文件的内容追加到另一个文件末尾。
cat file1.txt >> file2.txt
3. 从标准输入创建文件
cat
可用来从终端输入内容,并保存到文件中(按 Ctrl+D
结束输入)。
cat > newfile.txt
示例操作:
This is the content.
It will be saved in the file.
# 按 Ctrl+D 结束
文件 newfile.txt
内容为:
This is the content.
It will be saved in the file.
4. 查看文件内容分页
如果文件内容过长而无法在一屏显示,可以结合 less
或 more
命令:
cat file.txt | less
cat file.txt | more
5. 显示文件内容带行号
结合 nl
命令使用,nl
专门用来为文件添加行号。
cat file.txt | nl
6. 调试文件
如果需要查看文件中的不可见字符,可以使用 -v
。
cat -v file.txt
使用场景示例
1. 显示文件内容
cat file.txt
2. 创建一个文件
cat > newfile.txt
3. 将文件合并到一个新文件中
cat file1.txt file2.txt > merged.txt
4. 为每行添加行号显示
cat -n file.txt
5. 压缩文件中的空行
cat -s file.txt > no_blank_lines.txt
6. 显示文件内容,观察不可见字符
cat -v file.txt
注意事项
-
文件权限:
cat
读取文件时,需要对文件有读取权限,否则会报错:cat: file.txt: Permission denied
-
大文件处理:对于特别大的文件,不建议使用
cat
,因为它会一次性读取整个文件,可以使用less
或head/tail
替代:less largefile.txt head -n 100 largefile.txt
-
覆盖与追加:
- 使用
>
会覆盖目标文件内容。 - 使用
>>
会将内容追加到目标文件末尾。
- 使用
通过熟练使用 cat
命令,可以轻松查看、编辑、合并和处理文件内容。在日常文件管理和开发中,cat
是一个非常实用的工具。
常用选项总结:
选项 | 含义 |
---|---|
-n | 为所有行编号 |
-b | 为非空行编号 |
-A | 显示不可见字符(等同于 -vET ) |
-s | 压缩连续的空白行为一行 |
-T | 将制表符显示为 ^I |
-E | 在每行行尾显示 $ |