"Concatenate" 的缩写,是一个用于连接文件内容并打印到标准输出(终端) 的命令行工具,也常用于创建、查看、合并文件或向文件写入内容。
该命令是Linux中最基础的文本处理工具之一,功能简洁但灵活,可快速查看文件内容、拼接多个文件、生成简单文本文件或在脚本中处理文本流。
cat [选项] <文件1> <文件2> ...常用选项
-n:"number all output lines",为输出的每一行编号(包括空白行),例如cat -n config.ini显示配置文件内容并在每行前添加行号,便于定位特定行。-b:"number nonempty output lines",仅为非空白行编号,例如cat -b notes.txt对笔记中实际内容行编号,忽略空行编号,适合阅读结构化文本。-s:"squeeze multiple adjacent empty lines",压缩连续的空白行(将多行空行合并为一行),例如cat -s report.txt精简文档中的多余空行,使内容更紧凑。-E:"display $ at end of each line",在每行末尾显示$符号,例如cat -E script.sh可清晰区分行尾和空格,排查脚本中因换行符导致的语法错误。-T:"display tab characters as ^I",将制表符(Tab)显示为^I,例如cat -T data.csv查看表格文件中字段分隔是否为Tab而非空格,避免格式混淆。-v:"display nonprinting characters",显示非打印字符(除换行符和Tab外),例如cat -v log.txt排查日志中隐藏的控制字符或乱码问题。-A:"equivalent to -vET",等效于-vET的组合选项,同时显示行尾$、Tab为^I及非打印字符,例如cat -A messy.txt全面检查文本格式问题。--help:显示帮助信息,列出所有选项及用法说明。--version:显示命令版本信息。
参考示例
示例1:查看单个文件内容 执行
cat README.md,在终端直接打印README.md文件的全部内容,适合快速浏览短文本文件。示例2:为文件内容添加行号 执行
cat -n error.log,显示日志内容时在每行前添加数字编号,便于讨论或记录特定行的位置(如“第25行出现错误”)。示例3:合并多个文件内容到新文件 执行
cat part1.txt part2.txt part3.txt > complete.txt,将三个文件的内容按顺序拼接并写入complete.txt,适合整合拆分的文档。示例4:向文件追加内容 执行
cat >> todo.txt,进入输入模式,输入内容后按Ctrl+D结束,输入的内容会追加到todo.txt末尾(而非覆盖),适合临时添加内容。示例5:创建简单文本文件 执行
cat > greeting.txt,输入Hello, World!后按Ctrl+D,生成包含该内容的greeting.txt文件,比使用编辑器更快捷。示例6:检查文本格式问题 执行
cat -A config.yaml,通过显示行尾$、Tab为^I及隐藏字符,排查YAML配置文件中因缩进(空格vsTab)或换行符导致的解析错误。示例7:在脚本中读取文件内容并处理 脚本中执行
cat /etc/passwd | grep "bash",通过管道将用户信息文件内容传递给grep,筛选出使用bash作为默认shell的用户。示例8:显示多个文件内容并添加文件名标识 虽然
cat本身不直接支持,但结合nl或脚本可实现:for file in *.txt; do echo "=== $file ==="; cat "$file"; done,在每个文件内容前显示文件名,便于区分多文件输出。示例9:清空文件内容(保留文件本身) 执行
cat /dev/null > access.log,将空设备的内容(空)写入日志文件,快速清空文件而不删除文件(保留权限和inode信息),适合重置日志文件。
说明:
cat不适合查看超大文件(如GB级日志),因为会瞬间输出大量内容导致终端卡顿,此时应使用less或more分页查看。此外,cat读取二进制文件可能导致终端乱码,需谨慎使用。