cp命令详解

🏝️专栏:计算机操作系统
🌅主页:猫咪-9527主页

“欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。”

目录

1. 基本功能

2. 命令语法

3. 常用选项

4. 常见用法示例

4.1 复制单个文件

4.2 递归复制目录

4.3 覆盖文件时提示用户确认

4.4 强制覆盖文件

4.5 复制时显示详细信息

4.6 只复制更新的文件

4.7 保留文件属性

4.8 不覆盖已有文件

4.9 归档模式复制整个目录

4.10 使用父目录结构复制

4.11 备份已覆盖文件

4.12 复制符号链接

5. 注意事项

6. 总结


1. 基本功能

cp 是 Linux 系统中用于复制文件或目录的命令。可以将文件从一个位置复制到另一个位置,也可以递归复制目录内容。


2. 命令语法
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
  • 源文件:需要复制的文件或目录。
  • 目标文件/目录:复制到的目标文件或目录。

3. 常用选项
选项描述
-a归档模式,保留文件的所有属性(权限、时间戳、符号链接等),适合复制整个目录。
-r / -R递归复制目录及其内容(包括子目录及其中的所有文件)。
-f强制复制,即使目标文件不可写也会覆盖,不提示用户确认。
-i覆盖文件前提示用户确认,避免误覆盖。
-u只复制比目标文件更新的文件,或当目标文件不存在时才复制。
-p保留文件的权限、所有者、时间戳等属性(类似 -a)。
-v显示复制过程的详细信息(列出每个被复制的文件和路径)。
-n不覆盖已有的目标文件,防止文件被意外覆盖。
--preserve保留文件的属性(如权限、所有者、时间戳),等同于 -p
--backup在覆盖文件时,创建备份文件。
--parents在目标目录中保留源文件的目录结构。例如:复制 src/file1dest/,会保留目录结构 src/file1
--remove-destination在复制之前先删除目标文件(与覆盖不同)。

4. 常见用法示例
4.1 复制单个文件

将文件 file1 复制到 file2

cp file1 file2

4.2 递归复制目录

将目录 dir1 复制到 dir2,包括 dir1 中的所有子目录和文件:

cp -r dir1 dir2

4.3 覆盖文件时提示用户确认

file1 复制到 dir1,如果目标位置已有文件,提示用户确认是否覆盖:

cp -i file1 dir1/

4.4 强制覆盖文件

file1 强制复制到 dir1,覆盖目标文件时不提示:

cp -f file1 dir1/

4.5 复制时显示详细信息

在复制文件或目录时,显示文件名和复制路径:

cp -v file1 file2

输出示例:

'file1' -> 'file2'

4.6 只复制更新的文件

将文件 file1 复制到目录 dir1,仅在 dir1 中的文件比 file1 旧或目标文件不存在时才进行复制:

cp -u file1 dir1/

4.7 保留文件属性

将文件 file1 复制到 file2,同时保留文件的权限、时间戳、所有者等属性:

cp -p file1 file2

4.8 不覆盖已有文件

file1 复制到 file2,如果 file2 已存在,则不进行复制:

cp -n file1 file2

4.9 归档模式复制整个目录

复制目录 dir1dir2,保留所有文件属性和结构(包括符号链接):

cp -a dir1 dir2

4.10 使用父目录结构复制

将文件 src/file1 复制到目标目录 dest/,保留原有的目录结构:

cp --parents src/file1 dest/

4.11 备份已覆盖文件

复制文件时,创建备份文件:

cp --backup file1 file2

4.12 复制符号链接

如果需要复制符号链接本身而不是链接指向的文件:

cp -a link1 link2

5. 注意事项
  1. 递归复制目录
    如果要复制目录,必须使用 -r-R 选项,否则会报错。
    示例:

    cp dir1 dir2
    

    输出:

    cp: -r not specified; omitting directory 'dir1'
    
  2. 符号链接的处理

    • 如果使用 -a,将复制符号链接本身,而不是链接指向的文件。
    • 如果需要复制符号链接指向的实际文件,则无需额外选项。
  3. 权限要求

    • cp 命令要求对目标路径有写权限。
    • 如果目标路径中已有文件被占用,可能会导致复制失败。
  4. 避免误覆盖

    • 使用 -i-n 选项可以防止意外覆盖已有文件。
    • 如果要强制覆盖,需使用 -f

6. 总结

cp 是 Linux 系统中一个基础而强大的命令。它不仅可以简单地复制文件,还能通过各种选项满足递归复制、权限保留、备份保护等复杂需求。在实际操作中,可以根据需求组合多个选项,完成不同的复制任务。


推荐组合用法:

  • 安全复制: 提示用户覆盖确认,并显示详细信息:

    cp -iv file1 dir1/
    
  • 备份模式: 复制文件时备份已存在的目标文件:

    cp --backup file1 dir1/
    
  • 复制目录及其属性: 复制整个目录,并保留所有文件属性:

    cp -a dir1 dir2/
    

 通过熟练使用 cp 命令及其选项,可以轻松完成文件或目录的备份和拷贝工作,在 Linux 文件管理中非常高效和常用,相信这篇文章可以让你的linux学习之路一帆风顺。

看到这里不容易点个关注不迷路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950374.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git的学习和常见问题

文章目录 1.初始化配置2.新建仓库3.添加和提交文件4.git reset 回退版本5.git diff 查看差异6.git rm 删除文件7.文件 .gitigonre8.克隆远程仓库9.将已有的本地仓库关联到远程仓库10.分支的基本操作11.解决合并冲突配置问题 最近基于GeekHour的视频学习Git,记录了一…

《Mcal》--MCU模块

一、MCU模块的主要功能 控制系统时钟的产生。控制系统通用模块,该模块会涉及到Adc、Ftm等外设的配置。控制外设时钟。控制MCU运行的模式。初始化定义RAM Section。 比较重要的是时钟的配置。 二、系统时钟的配置 1、芯片时钟树 要想弄明白时钟配置,需…

【每日学点鸿蒙知识】查看触摸热区范围、直接赋值到剪贴板、组件截图、横竖屏切换、防截图等

1、如何查看触摸热区范围? 前只能通过自定义的方式获取responseRegion。参考文档:触摸热区设置 Entry Component struct TouchTargetExample {State text: string State x:number 0State y:number 0State reg_width:string 50%State reg_height:st…

ThinkPHP 8高效构建Web应用-获取请求对象

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…

STM32烧写失败之Contents mismatch at: 0800005CH (Flash=FFH Required=29H) !

一&#xff09;问题&#xff1a;用ULINK2给STM32F103C8T6下载程序&#xff0c;下载方式设置如下&#xff1a; 出现下面两个问题&#xff1a; 1&#xff09;下载问题界面如下&#xff1a; 这个错误的信息大概可以理解为&#xff0c;在0x08000063地址上读取到flash存储为FF&am…

vscode通过ssh连接服务器实现免密登录

一、通过ssh连接服务器 1、打开vscode&#xff0c;进入拓展&#xff08;CtrlShiftX&#xff09;&#xff0c;下载拓展Remote - SSH。 2、点击远程资源管理器选项卡&#xff0c;选择远程&#xff08;隧道/SSH&#xff09;类别。 3、点击SSH配置。 4、在中间上部分弹出的配置文件…

在Nvidia Jetson ADX Orin中使用TensorRT-LLM运行llama3-8b

目录 背景&#xff1a;步骤 1.获取模型权重第 2 步&#xff1a;准备第 3 步&#xff1a;构建 TensorRT-LLM 引擎 背景&#xff1a; 大型语言模型 &#xff08;LLM&#xff09; 推理的关键瓶颈在于 GPU 内存资源短缺。因此&#xff0c;各种加速框架主要强调减少峰值 GPU 内存使…

Unity Shader学习日记 part4 Shader 基础结构

其实在这一篇之前&#xff0c;应该还有一个关于坐标空间转换的内容&#xff0c;但是内容囤积的有些多&#xff0c;就先把Shader的基础结构先记录一下。 笔记主要记录在代码中&#xff0c;所以知识点主要是图和代码的展示。 Unity Shader分类 在Unity中&#xff0c;Shader的种…

特征点检测与匹配——MATLAB R2022b

特征点检测与匹配在计算机视觉中的作用至关重要,它为图像处理、物体识别、增强现实等领域提供了坚实的基础。 目录 Harris角点检测 SIFT(尺度不变特征变换) SURF(加速稳健特征) ORB(Oriented FAST and Rotated BRIEF) 总结 特征点检测与匹配是计算机视觉中的一项基…

Airflow:HttpSensor实现API驱动数据流程

数据管道工作流通常依赖于api来访问、获取和处理来自外部系统的数据。为了处理这些场景&#xff0c;Apache Airflow提供了HttpSensor&#xff0c;这是一个内置的Sensor&#xff0c;用于监视HTTP请求的状态&#xff0c;并在满足指定条件时触发后续任务。在这篇博文中&#xff0c…

图数据库 | 17、高可用分布式设计(上)

我们在前面的文章中&#xff0c;探索了多种可能的系统扩展方式&#xff0c;以及每种扩展方式的优劣。 本篇文章将通过具体的架构设计方案来对每一种方案的设计、投入产出比、各项指标与功能&#xff0c;以及孰优孰劣等进行评价。 在设计高性能、高可用图数据库的时候&#xf…

JAVA学习记录1

文章为个人学习记录&#xff0c;仅供参考&#xff0c;如有错误请指出。 什么是JAVA&#xff1f; JAVA是一种高级的编程语言&#xff0c;可以用于开发大部分场景的软件&#xff0c;但主要用于服务器的开发。 什么是JDK&#xff1f; 类似于python使用PyCharm来编写代码&#…

css中的部分文字特性

文章目录 一、writing-mode二、word-break三、word-spacing;四、white-space五、省略 总结归纳常见文字特性&#xff0c;后续补充 一、writing-mode 默认horizontal-tbwriting-mode: vertical-lr; 从第一排开始竖着排&#xff0c;到底部再换第二排&#xff0c;文字与文字之间从…

Android wifi常见问题及分析

参考 Android Network/WiFi 那些事儿 前言 本文将讨论几个有意思的网络问题&#xff0c;同时介绍 Android 上常见WiFi 问题的分析思路。 网络基础Q & A 一. 网络分层缘由 分层想必大家很熟悉&#xff0c;是否想过为何需要这样分层&#xff1f; 网上大多都是介绍每一层…

【C语言】_指针与数组

目录 1. 数组名的含义 1.1 数组名与数组首元素的地址的联系 1.3 数组名与首元素地址相异的情况 2. 使用指针访问数组 3. 一维数组传参的本质 3.1 代码示例1&#xff1a;函数体内计算sz&#xff08;sz不作实参传递&#xff09; 3.2 代码示例2&#xff1a;sz作为实参传递 3…

IDEA 字符串拼接符号“+”位于下一行的前面,而不是当前行的末尾

效果图 IDEA 默认效果是“历史效果”&#xff0c;经过修改后为“预期效果” 设置方式 在设置中找到Editor > Code Style > Java > Wrapping and Braces > Binary expressions > 勾选 Operation sign on next line 即可实现。具体设置如图。

牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形

1. 题目描述 用C语言在屏幕上输出以下图案&#xff1a; 2. 思路 我是先上手&#xff0c;先把上半部分打印出来&#xff0c;然后慢慢再来分析&#xff0c;下面这是我先把整个上半部分打印出来&#xff0c;因为空格不方便看是几个&#xff0c;这里先用&代替空格了 然后这里…

C# 整型、浮点型 数值范围原理分析

总目录 前言 一、整型、浮点型 数值范围列表 二、什么是大小、范围 在上面的列表中&#xff0c;每个数据类型都有自己的Range (范围) 和 Size (大小)。 1. 范围 范围好理解&#xff0c;就是对应数据类型的数据范围&#xff0c;如 sbtyte 的数据范围是 -128~127&#xff0c;超…

安装vue脚手架出现的一系列问题

安装vue脚手架出现的一系列问题 前言使用 npm 安装 vue/cli2.权限问题及解决方法一&#xff1a;可以使用管理员权限进行安装。方法二&#xff1a;更改npm全局安装路径 前言 由于已有较长时间未进行 vue 项目开发&#xff0c;今日着手准备开发一个新的 vue 项目时&#xff0c;在…