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 命令学习笔记 本笔记将涵盖 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命令,本资源提供了一套“Linux命令壁纸带中文”的学习资料。这些壁纸将常见的Linux命令与精美的图像结合,每张壁纸上都清晰地标注了对应的中文注释,旨在帮助用户在日常使用中加深对命令...
内容概要:本文详细解析了Linux中常见的文件与目录管理命令,包括 ls、cd、cp、mv、rm 和 find,涵盖了命令的原理、参数、应用实例以及技术分析,旨在帮助读者深刻理解和熟练应用这些命令。 适合人群:具有一定Linux...
通过阅读《Linux学习手册--Linux命令大全》这本书,你可以系统地学习并逐步精通Linux操作系统。这个文档包含了丰富的实例和解释,无论你是初学者还是经验丰富的用户,都能从中受益匪浅。记住,实践是检验真理的唯一...
Linux命令大全手册是一份极其宝贵的资源,包含了超过550个不同的Linux命令,涵盖了从基本操作到高级系统管理的所有方面。这份手册不仅是初学者的入门指南,也是经验丰富的Linux用户日常工作中不可或缺的参考资料。 ...
不过,根据提供的信息,我们可以专注于Linux命令的学习。 在`linux_command(atu).chm`这个文件中,你将找到关于Linux命令的详细解释和使用示例。CHM(Compiled Help Manual)是微软的一种帮助文件格式,它包含索引...
在IT领域,Linux操作系统是许多专业开发者和系统管理...通过阅读和查阅"Linux命令学习.chm"这样的资料,你可以逐步成为一个熟练的Linux用户,并在工作中得心应手。不断实践和探索,你将发现Linux命令行世界的无限魅力。
以下是一些重要的Linux命令和相关知识点: 1. **终端与shell**:在Linux中,用户通过终端(Terminal)或控制台进行交互,它使用shell(如bash)作为命令解释器,执行用户输入的命令。Bash是最常用的shell,提供了...
【Linux网络操作系统基础:常用Linux命令】 Linux是一个广泛使用的开源操作系统,它的命令行界面提供了高效且灵活的系统管理工具。本章将深入讲解Linux的基础知识,特别是常用的命令,包括文件和目录的操作,以及...
对于初学者来说,从零开始学习Linux命令是迈入这个领域的基础。 首先,要理解Linux命令行界面的工作方式。在Red Hat Enterprise Linux 5中,用户可以通过多种方式进入文本模式,例如直接启动到文本模式、使用虚拟...