{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2024-07-07 16:52:05","updateBy":"admin","updateTime":"2024-07-07 16:52:05","remark":null,"id":82,"articleTitle":"每天一个Linux命令（六）cat","articleUrl":"linux_cat","articleThumbnail":"https://www.asumimoe.com/imgfiles/20250301/b95d839fa195428cb42fc7f104f50b0d.png","articleFlag":"0","draftStatus":"1","reprintStatement":"0","articleSummary":"cat是 Linux/Unix 系统中用于查看文件内容、合并文件以及创建文件的命令（Concatenate）。它是文件操作中最基础且高频使用的命令之一。","articleContent":"`cat` 是 Linux/Unix 系统中用于**查看文件内容**、**合并文件**以及**创建文件**的命令（Concatenate）。它是文件操作中最基础且高频使用的命令之一。\n\n---\n\n## 语法\n\n```bash\ncat [选项] [文件...]\n```\n\n---\n\n## 常用选项\n\n| 选项 | 说明                              |\n| ---- | --------------------------------- |\n| `-n` | 显示行号（包括空行）              |\n| `-b` | 显示行号（忽略空行）              |\n| `-s` | 压缩连续空行为一行                |\n| `-A` | 显示所有控制字符（等价于 `-vET`） |\n| `-E` | 在每行末尾显示 `$` 符号           |\n| `-T` | 将 Tab 字符显示为 `^I`            |\n| `-v` | 显示非打印字符（除 Tab 和换行外） |\n\n---\n\n## 使用示例\n\n### 1. 查看文件内容\n\n```bash\ncat file.txt\n```\n\n输出文件内容：\n\n```bash\nThis is line 1.\nThis is line 2.\n```\n\n---\n\n### 2. 显示行号\n\n```bash\ncat -n file.txt\n```\n\n输出：\n\n```bash\n 1  This is line 1.\n 2  This is line 2.\n```\n\n---\n\n### 3. 合并多个文件\n\n```bash\ncat file1.txt file2.txt > combined.txt\n```\n\n结果：`combined.txt` 包含 `file1.txt` 和 `file2.txt` 的内容\n\n---\n\n### 4. 创建新文件\n\n```bash\ncat > newfile.txt <<EOF\nLine 1\nLine 2\nEOF\n```\n\n文件内容：\n\n```bash\nLine 1\nLine 2\n```\n\n---\n\n### 5. 追加内容到文件\n\n```bash\ncat >> existing.txt <<EOF\nAdditional line 1.\nAdditional line 2.\nEOF\n```\n\n结果：内容追加到 `existing.txt` 末尾\n\n---\n\n### 6. 显示控制字符\n\n```bash\ncat -A file.txt\n```\n\n输出示例：\n\n```bash\nThis is line 1.$\nThis is line 2.$\n```\n\n---\n\n### 7. 压缩连续空行\n\n```bash\ncat -s file.txt\n```\n\n输入文件：\n\n```bash\nLine 1\n\n\nLine 2\n```\n\n输出：\n\n```bash\nLine 1\n\nLine 2\n```\n\n---\n\n## 注意事项\n\n1. **大文件处理**：`cat` 会一次性加载整个文件到内存，不适合处理超大文件（建议使用 `less` 或 `more`）\n2. **权限问题**：需对目标文件有读权限\n3. **文件不存在**：若文件不存在，会报错 `No such file or directory`\n\n---\n\n## 常见错误处理\n\n### 错误示例：文件不存在\n\n```bash\ncat non_existing_file.txt\n# 输出：cat: non_existing_file.txt: No such file or directory\n```\n\n### 错误示例：权限不足\n\n```bash\ncat /root/file.txt\n# 输出：cat: /root/file.txt: Permission denied\n```\n\n---\n\n## 进阶技巧\n\n### 1. 结合 `tac` 反向输出文件\n\n```bash\ntac file.txt\n```\n\n输出：\n\n```bash\nThis is line 2.\nThis is line 1.\n```\n\n---\n\n### 2. 使用 `cat` 和 `grep` 过滤内容\n\n```bash\ncat file.txt | grep \"keyword\"\n```\n\n输出包含 `keyword` 的行\n\n---\n\n### 3. 结合 `awk` 处理内容\n\n```bash\ncat file.txt | awk '{print \"Line:\", $0}'\n```\n\n输出：\n\n```bash\nLine: This is line 1.\nLine: This is line 2.\n```\n\n---\n\n### 4. 使用 `cat` 和 `tee` 多文件输出\n\n```bash\ncat file.txt | tee copy1.txt copy2.txt\n```\n\n结果：`copy1.txt` 和 `copy2.txt` 内容与 `file.txt` 相同\n\n---\n\n### 5. 结合 `xargs` 批量处理文件\n\n```bash\nfind . -name \"*.txt\" | xargs cat\n```\n\n输出所有 `.txt` 文件的内容\n\n---\n\n### 6. 使用 `cat` 和 `sed` 替换内容\n\n```bash\ncat file.txt | sed 's/line/LINE/'\n```\n\n输出：\n\n```bash\nThis is LINE 1.\nThis is LINE 2.\n```\n\n---\n\n### 7. 结合 `cat` 和 `while` 逐行处理\n\n```bash\ncat file.txt | while read line; do\n  echo \"Processing: $line\"\ndone\n```\n\n输出：\n\n```bash\nProcessing: This is line 1.\nProcessing: This is line 2.\n```","categoryId":1,"viewCount":71,"categoryName":"Linux","author":"球接子","authorAvatar":null,"tagIds":[10],"tagNames":["Linux基础"]}}