cat命令

cat 命令 #

cat命令(concatenate)用于连接文件并打印到标准输出。它可以用来显示文件内容、创建新文件、合并文件等。

语法 #

cat [选项] [文件...]

常用选项 #

选项 描述
-A, --show-all 等同于-vET,显示所有控制字符
-b, --number-nonblank 对非空行编号
-e 等同于-vE,显示行尾标记
-E, --show-ends 在每行结尾显示$符号
-n, --number 对所有行编号
-s, --squeeze-blank 压缩连续的空行为一行
-t 等同于-vT,显示制表符
-T, --show-tabs 将制表符显示为^I
-v, --show-nonprinting 使用^和 M-符号显示非打印字符

常见用法 #

1. 显示文件内容 #

cat file.txt

2. 显示多个文件的内容 #

cat file1.txt file2.txt

3. 创建新文件 #

cat > newfile.txt
# 输入内容,按Ctrl+D结束

4. 将多个文件合并为一个文件 #

cat file1.txt file2.txt > combined.txt

5. 追加内容到文件 #

cat >> file.txt
# 输入内容,按Ctrl+D结束

cat file2.txt >> file1.txt

6. 显示行号 #

cat -n file.txt

输出示例:

     1  This is line 1
     2  This is line 2
     3
     4  This is line 4

7. 只对非空行编号 #

cat -b file.txt

输出示例:

     1  This is line 1
     2  This is line 2

     3  This is line 4

8. 显示行尾标记 #

cat -E file.txt

输出示例:

This is line 1$
This is line 2$
$
This is line 4$

9. 显示制表符 #

cat -T file.txt

输出示例(假设文件包含制表符):

This^Iis^Ia^Itabbed^Iline

10. 压缩连续空行 #

cat -s file.txt

11. 显示所有特殊字符 #

cat -A file.txt

12. 从标准输入读取 #

echo "Hello, World!" | cat

13. 将标准输入与文件合并 #

cat file.txt - < input.txt

这会先显示 file.txt 的内容,然后显示 input.txt 的内容(通过标准输入传递)。

实用示例 #

1. 查看二进制文件(谨慎使用) #

cat -v binary_file

2. 创建简单的文本文件 #

cat > notes.txt << EOF
This is a note.
It has multiple lines.
EOF

3. 合并多个日志文件 #

cat log1.txt log2.txt log3.txt > combined_logs.txt

4. 显示文件内容并添加行号,然后保存到新文件 #

cat -n file.txt > numbered_file.txt

5. 将文件内容作为邮件发送 #

cat file.txt | mail -s "File Content" [email protected]

6. 查看配置文件,忽略注释和空行 #

cat config.txt | grep -v '^#' | grep -v '^$'

提示 #

  • 对于大文件,使用lessmore命令比cat更适合,因为它们支持分页查看
  • 使用cat查看二进制文件可能会产生不可预测的结果,包括乱码和控制字符
  • 在脚本中,通常使用重定向(>>>)而不是交互式输入
  • 使用tac命令(cat的反向)可以按相反的顺序显示文件内容(从最后一行到第一行)
  • 使用-A选项可以帮助检测文件中的不可见字符,如制表符、回车符和换行符
  • 在处理包含特殊字符的文件时,cat -A可以帮助诊断问题
  • 使用cat创建文件时,可以使用 here 文档(<<EOF)来简化多行输入
  • 在管道中使用cat时,通常可以省略它,例如cat file.txt | grep pattern可以简化为grep pattern file.txt