cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。
------------------------------------------------------------------------------------------------------
1.命令格式:
用法:
cp [选项]... [-T] 源 目的
或:cp [选项]... 源... 目录
或:cp [选项]... -t 目录 源...
2.命令功能:
将源文件复制至目标文件,或将多个源文件复制至目标目录。
3.命令参数:
-a, --archive 等于-dR --preserve=all
--backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l, --link 链接文件而不复制
-L, --dereference 总是跟随符号链接
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-R, -r, --recursive 复制目录及目录内的所有项目
4.命令实例:
------------------------------------------------------------------------------------
实例一:复制单个文件到目标目录,文件在目标文件中不存在
命令:
cp log.log test5
输出:
[root@localhost test]# cp log.log test5
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxr-xr-x 2 root root 4096 10-28 14:53 test5
[root@localhost test]# cd test5
[root@localhost test5]# ll
-rw-r--r-- 1 root root 0 10-28 14:46 log5-1.log
-rw-r--r-- 1 root root 0 10-28 14:46 log5-2.log
-rw-r--r-- 1 root root 0 10-28 14:46 log5-3.log
-rw-r--r-- 1 root root 0 10-28 14:53 log.log
说明:
在没有带-a参数时,两个文件的时间是不一样的。在带了-a参数时,两个文件的时间是一致的。
实例二:目标文件存在时,会询问是否覆盖
命令:
cp log.log test5
输出:
[root@localhost test]# cp log.log test5
cp:是否覆盖“test5/log.log”? n
[root@localhost test]# cp -a log.log test5
cp:是否覆盖“test5/log.log”? y
[root@localhost test]# cd test5/
[root@localhost test5]# ll
-rw-r--r-- 1 root root 0 10-28 14:46 log5-1.log
-rw-r--r-- 1 root root 0 10-28 14:46 log5-2.log
-rw-r--r-- 1 root root 0 10-28 14:46 log5-3.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
说明:
目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖。
实例三:复制整个目录
命令:
输出:
目标目录存在时:
[root@localhost test]# cp -a test3 test5
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxr-xr-x 3 root root 4096 10-28 15:11 test5
[root@localhost test]# cd test5/
[root@localhost test5]# ll
-rw-r--r-- 1 root root 0 10-28 14:46 log5-1.log
-rw-r--r-- 1 root root 0 10-28 14:46 log5-2.log
-rw-r--r-- 1 root root 0 10-28 14:46 log5-3.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
目标目录不存在是:
[root@localhost test]# cp -a test3 test4
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxrwxrwx 2 root root 4096 10-28 14:47 test4
drwxr-xr-x 3 root root 4096 10-28 15:11 test5
[root@localhost test]#
说明:
注意目标目录存在与否结果是不一样的。目标目录存在时,整个源目录被复制到目标目录里面。
实例四:复制的 log.log 建立一个连结档 log_link.log
命令:
cp -s log.log log_link.log
输出:
[root@localhost test]# cp -s log.log log_link.log
[root@localhost test]# ll
lrwxrwxrwx 1 root root 7 10-28 15:18 log_link.log -> log.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
drwxr-xr-x 6 root root 4096 10-27 01:58 scf
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxrwxrwx 2 root root 4096 10-28 14:47 test4
drwxr-xr-x 3 root root 4096 10-28 15:11 test5
说明:
那个 log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』,所以您会看到在文件的最右边,会显示这个文件是『连结』到哪里去的!
相关推荐
Linux命令学习手册通常会涵盖系统管理和文件系统管理的各个方面。系统管理部分涉及系统的启动、关机、用户管理、进程监控和管理、磁盘配额、网络配置等方面。例如,命令如"swapoff"和"swapon"分别用于关闭和激活...
Linux 命令学习笔记 本笔记将涵盖 Linux 命令的基本概念、虚拟机的概念、Linux 主要目录结构、Linux 命令速查表、文件和目录常用命令等几个方面。 一、Linux 概念 Linux 是一种免费、开放源代码的操作系统,广泛...
Linux命令学习手册是一份专为初学者设计的资源,它涵盖了Linux操作系统中常用的各种命令,帮助用户更好地理解和操作Linux环境。Linux是一种免费且开源的操作系统,广泛应用在服务器、超级计算机和个人计算机上。学习...
本文档旨在为读者提供一份详尽的Linux命令集,帮助用户快速学习和掌握Linux命令使用技巧,以便更好地使用Linux操作系统。 Linux命令主要分为系统命令和用户命令两大类。系统命令通常涉及系统管理、网络配置、硬件...
这个标题所指的“linux cp命令 源代码”应该是一个实现了Linux `cp`命令功能的个人版本,可能是为了学习、教学或优化目的。下面将详细讨论`cp`命令的基本用法、工作原理以及可能包含在源代码中的关键部分。 `cp`...
【Linux学习:Linux基本命令】 Linux是一个开源操作系统,它的强大在于其命令行界面,通过一系列基本命令进行系统管理和操作。本篇文章将详细讲解Linux的基本命令,包括登录和退出、文件命令、目录和层次命令、查找...
本资源包提供了四份关于Linux命令学习的CHM(Microsoft帮助文件)文档,分别是"大学生攻克Linux系统教程(又名天下没有难学的Linux)"、"Linux基础命令教程豪华版"、"Linux常用命令全集"以及"Linux命令大全"。...
学习 Linux 的第一步:当然是从 Linux 命令 入手: 查看 Linux 命令帮助信息 - 关键词:help, whatis, info, which, whereis, man Linux 文件目录管理 - 关键词:cd, ls, pwd, mkdir, rmdir, tree, touch, ln, ...
Linux命令是Linux操作系统中进行文件管理、系统控制和任务自动化的主要工具。对于初学者来说,掌握这些基本命令是至关重要的。...学习Linux命令是一个持续的过程,随着经验的增长,你将逐渐熟悉更多高级和专业的命令。
本资源"Linux命令大全"包含了516个Linux命令的详细资料,对于学习和理解Linux操作系统至关重要。下面,我们将深入探讨这个资源中涉及的一些关键知识点。 1. **命令手册**: - 在Linux世界中,命令手册(man pages...
Linux命令学习模拟器是一款专为Linux初学者设计的实用工具,它可以帮助用户在不实际操作Linux系统的情况下,熟悉和掌握各种Linux命令的使用。这款模拟器可能是基于网页或者桌面应用程序的形式,提供了一个仿真的...
Linux操作系统是基于类Unix系统的开源操作系统,以其高效、稳定和灵活性著称。Linux命令行界面提供了一种强大且灵活的操作方式。这里介绍一系列Linux常用...Linux命令手册是学习和使用Linux系统不可或缺的参考资料。
为了更好地理解和记忆Linux命令,本资源提供了一套“Linux命令壁纸带中文”的学习资料。这些壁纸将常见的Linux命令与精美的图像结合,每张壁纸上都清晰地标注了对应的中文注释,旨在帮助用户在日常使用中加深对命令...
内容概要:本文详细解析了Linux中常见的文件与目录管理命令,包括 ls、cd、cp、mv、rm 和 find,涵盖了命令的原理、参数、应用实例以及技术分析,旨在帮助读者深刻理解和熟练应用这些命令。 适合人群:具有一定Linux...
- **Bash手册**:通过`man`命令,用户可以获取任何Linux命令的帮助信息,例如`man bash`可以查看Bash Shell的手册页。 2. Linux命令行基础: - **正斜线(/)与反斜线(\)**:在Linux中,路径通常使用正斜线分隔...
而其他命令(如`cp`、`rm`等)则是独立的程序,由shell调用执行。 3. **路径搜索**:当shell接收到一个命令时,它会先检查该命令是否是内部命令。如果不是,shell会在指定的路径中搜索该命令对应的程序。 4. **错误...
通过阅读《Linux学习手册--Linux命令大全》这本书,你可以系统地学习并逐步精通Linux操作系统。这个文档包含了丰富的实例和解释,无论你是初学者还是经验丰富的用户,都能从中受益匪浅。记住,实践是检验真理的唯一...
Linux命令大全手册是一份极其宝贵的资源,包含了超过550个不同的Linux命令,涵盖了从基本操作到高级系统管理的所有方面。这份手册不仅是初学者的入门指南,也是经验丰富的Linux用户日常工作中不可或缺的参考资料。 ...
不过,根据提供的信息,我们可以专注于Linux命令的学习。 在`linux_command(atu).chm`这个文件中,你将找到关于Linux命令的详细解释和使用示例。CHM(Compiled Help Manual)是微软的一种帮助文件格式,它包含索引...
在IT领域,Linux操作系统是许多专业开发者和系统管理...通过阅读和查阅"Linux命令学习.chm"这样的资料,你可以逐步成为一个熟练的Linux用户,并在工作中得心应手。不断实践和探索,你将发现Linux命令行世界的无限魅力。