{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2024-05-30 12:14:15","updateBy":"admin","updateTime":"2024-05-30 12:14:15","remark":null,"id":78,"articleTitle":"每天一个Linux命令（二）cp","articleUrl":"linux_cp","articleThumbnail":"https://www.asumimoe.com/imgfiles/20250301/b95d839fa195428cb42fc7f104f50b0d.png","articleFlag":"0","draftStatus":"1","reprintStatement":"0","articleSummary":"cp是 Linux/Unix 系统中用于复制文件或目录的命令，支持递归复制、保留文件属性、交互式覆盖确认等功能。它是文件管理中的核心命令之一。","articleContent":"`cp` 是 Linux/Unix 系统中用于**复制文件或目录**的命令，支持递归复制、保留文件属性、交互式覆盖确认等功能。它是文件管理中的核心命令之一。\n\n---\n\n## 语法\n\n```bash\ncp [选项] 源文件/目录 目标路径\n```\n\n支持同时复制多个文件到目录：\n\n```bash\ncp [选项] 源1 源2 ... 目标目录\n```\n\n------\n\n## 常用选项\n\n| 选项         | 说明                                             |\n| :----------- | :----------------------------------------------- |\n| `-r` 或 `-R` | 递归复制目录及其内容（必须用于目录复制）         |\n| `-i`         | 交互模式（覆盖前询问确认）                       |\n| `-v`         | 显示详细操作过程（Verbose）                      |\n| `-p`         | 保留文件属性（权限、时间戳等）                   |\n| `-u`         | 仅复制源中更新或目标中不存在的文件（Update）     |\n| `-l`         | 创建硬链接而非复制文件（节省空间）               |\n| `-s`         | 创建符号链接（软链接）而非复制文件               |\n| `-a`         | 归档模式（相当于 `-rp`，保留所有属性并递归复制） |\n\n------\n\n## 使用示例\n\n### 1. 复制单个文件到目标路径\n\n```bash\ncp file.txt backup/\n\n\n输出结果（目标目录 `backup/` 中生成 `file.txt`）。\n```\n\n------\n\n### 2. 复制多个文件到目录\n\n```bash\ncp file1.txt file2.jpg images/\n\n输出结果：`images/` 目录中包含 `file1.txt` 和 `file2.jpg`。\n```\n\n------\n\n### 3. 递归复制目录（包含子目录）\n\n```bash\ncp -r project/ project_backup/\n```\n\n目录结构示例：\n\n```\nproject_backup/\n├── src/\n└── README.md\n```\n\n------\n\n### 4. 交互式覆盖确认\n\n```bash\ncp -i old_file.txt new_file.txt\n```\n\n输出提示（若目标文件存在）：\n\n```bash\ncp: overwrite 'new_file.txt'? y/n\n```\n\n部分Linux系统中cp命令已默认添加-i选项，如果需要调用原生cp命令，不提示是否覆盖而直接复制，可使用`\\cp`\n\n------\n\n### 5. 保留文件属性复制\n\n```bash\ncp -p document.pdf archive/\n```\n\n验证属性保留：\n\n```bash\nls -l archive/document.pdf  # 显示与原文件相同的权限和时间戳\n```\n\n------\n\n### 6. 仅复制更新的文件\n\n```bash\ncp -u *.log backup/\n\n仅当 `backup/` 中的 `.log` 文件版本较旧或不存在时复制。\n```\n\n------\n\n### 7. 显示详细复制过程\n\n```bash\ncp -rv src/ dest/\n```\n\n输出示例：\n\n```bash\n'src/file1' -> 'dest/file1'\n'src/subdir/' -> 'dest/subdir/'\n```\n\n------\n\n### 8. 创建硬链接替代复制（节省空间）\n\n```bash\ncp -l big_file.dat linked_file.dat\n```\n\n验证链接：\n\n```bash\nls -i  # 查看 inode 号，两个文件相同\n```\n\n------\n\n## 注意事项\n\n1. **覆盖风险**：默认不提示直接覆盖目标文件，重要操作建议结合 `-i` 选项。部分Linux的cp命令默认别名中包含了-i选项，如果需要调用原生cp命令需在命令前加\\，如`\\cp`\n2. **目录复制**：复制目录时必须使用 `-r` 或 `-a` 选项。\n3. **权限问题**：若目标目录无写入权限，会报错 `Permission denied`。\n4. **跨设备复制**：跨磁盘分区时，硬链接（`-l`）可能失效，软链接（`-s`）可能路径错误。\n5. **通配符**：支持通配符匹配，如 `cp *.txt text_files/`。","categoryId":1,"viewCount":84,"categoryName":"Linux","author":"球接子","authorAvatar":null,"tagIds":[4,10],"tagNames":["Shell","Linux基础"]}}